> 데이터 베이스 > MySQL 튜토리얼 > '하위 쿼리가 1개 이상의 행을 반환합니다' 오류를 피하면서 MySQL의 각 범주에서 상위 5개 항목을 검색하는 방법은 무엇입니까?

'하위 쿼리가 1개 이상의 행을 반환합니다' 오류를 피하면서 MySQL의 각 범주에서 상위 5개 항목을 검색하는 방법은 무엇입니까?

Linda Hamilton
풀어 주다: 2024-11-10 09:13:03
원래의
543명이 탐색했습니다.

How to Retrieve the Top 5 Items from Each Category in MySQL While Avoiding the

MySQL의 각 범주에서 상위 5개 항목 검색

항목을 가져오는 동안 "하위 쿼리가 1개 이상의 행을 반환합니다"라는 오류가 발생했습니다. 각 메뉴 카테고리의 상위 5개 메뉴 항목은 무엇입니까? 해결책은 부작용 변수를 사용하는 것입니다.

수정된 접근 방식을 분석해 보겠습니다.

하위 쿼리에서는 SQL의 @ 표기법을 사용하여 부작용 변수 @r 및 @g를 도입합니다. 이러한 변수는 그룹 멤버십을 추적하고 각 그룹 내 순위를 높이는 데 사용됩니다.

  1. @g:=null - @g를 NULL로 초기화하여 새 그룹을 시작함을 나타냅니다.
  2. @r:=0 - @r을 0으로 초기화하여 새 순위의 시작을 나타냅니다.
  3. 하위 쿼리(여기서 m.menuid = s.menuid)의 WHERE 절은 s와 m이 메뉴 ID를 기준으로 정렬됩니다.
  4. @r:=case when @g=m.profilename then @r 1 else 1 end - 이 사례 표현식은 m.profilename이 현재와 동일한 경우 @r을 1씩 증가시킵니다. 그룹(@g). 그렇지 않으면 @r을 1로 재설정하여 새 그룹의 시작을 알립니다.
  5. @g:=m.profilename - @g를 현재 그룹의 프로필 이름으로 업데이트하여 이 그룹에 속하는 후속 행을 추적할 수 있습니다. group.
  6. 주 쿼리는 하위 쿼리 테이블 별칭 X에서 프로필 이름과 이름을 검색합니다.
  7. 마지막 WHERE r <= 5 조건은 각 그룹 내 상위 5개 항목만 필터링합니다.

이 접근 방식을 구현하면 "하위 쿼리가 1개 이상의 행을 반환합니다." 오류 없이 원하는 결과를 효율적으로 얻을 수 있습니다.

위 내용은 '하위 쿼리가 1개 이상의 행을 반환합니다' 오류를 피하면서 MySQL의 각 범주에서 상위 5개 항목을 검색하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿