MySQL의 각 범주에서 상위 5개 항목 검색
항목을 가져오는 동안 "하위 쿼리가 1개 이상의 행을 반환합니다"라는 오류가 발생했습니다. 각 메뉴 카테고리의 상위 5개 메뉴 항목은 무엇입니까? 해결책은 부작용 변수를 사용하는 것입니다.
수정된 접근 방식을 분석해 보겠습니다.
하위 쿼리에서는 SQL의 @ 표기법을 사용하여 부작용 변수 @r 및 @g를 도입합니다. 이러한 변수는 그룹 멤버십을 추적하고 각 그룹 내 순위를 높이는 데 사용됩니다.
- @g:=null - @g를 NULL로 초기화하여 새 그룹을 시작함을 나타냅니다.
- @r:=0 - @r을 0으로 초기화하여 새 순위의 시작을 나타냅니다.
- 하위 쿼리(여기서 m.menuid = s.menuid)의 WHERE 절은 s와 m이 메뉴 ID를 기준으로 정렬됩니다.
- @r:=case when @g=m.profilename then @r 1 else 1 end - 이 사례 표현식은 m.profilename이 현재와 동일한 경우 @r을 1씩 증가시킵니다. 그룹(@g). 그렇지 않으면 @r을 1로 재설정하여 새 그룹의 시작을 알립니다.
- @g:=m.profilename - @g를 현재 그룹의 프로필 이름으로 업데이트하여 이 그룹에 속하는 후속 행을 추적할 수 있습니다. group.
- 주 쿼리는 하위 쿼리 테이블 별칭 X에서 프로필 이름과 이름을 검색합니다.
- 마지막 WHERE r <= 5 조건은 각 그룹 내 상위 5개 항목만 필터링합니다.
이 접근 방식을 구현하면 "하위 쿼리가 1개 이상의 행을 반환합니다." 오류 없이 원하는 결과를 효율적으로 얻을 수 있습니다.
위 내용은 '하위 쿼리가 1개 이상의 행을 반환합니다' 오류를 피하면서 MySQL의 각 범주에서 상위 5개 항목을 검색하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!