MySQL의 각 카테고리에서 상위 5개 메뉴 항목을 검색하는 방법은 무엇입니까?

Patricia Arquette
풀어 주다: 2024-11-06 02:17:02
원래의
937명이 탐색했습니다.

How to Retrieve the Top 5 Menu Items from Each Category in MySQL?

MySQL의 각 카테고리에서 상위 5개 항목 반환

과제:
상위 5개 메뉴 검색 "menus"와 "menuitems"라는 두 개의 테이블로 구성된 데이터베이스의 각 카테고리 항목.

해결책:

제시된 코드는 상위 5개 항목을 표시하는 것을 목표로 합니다. 메뉴 카테고리별로 그러나 여러 행을 검색하는 하위 쿼리로 인해 오류가 반환됩니다. 이 문제를 해결하기 위해 부작용 변수를 활용하여 범주 내 각 행의 위치를 ​​추적할 수 있습니다.

SELECT profilename, name
FROM
(
    SELECT m.profilename, s.name,
        @r:=case when @g=m.profilename then @r+1 else 1 end r,
        @g:=m.profilename
    FROM (select @g:=null,@r:=0) n
    cross join menus m 
    left join menuitems s on m.menuid = s.menuid
) X
WHERE r <= 5
로그인 후 복사

분석:

  1. 외부 쿼리 부작용 변수(@r, @g)를 통해 행 위치(r) 및 그룹 식별자(g) 값을 할당하는 하위 쿼리(X)에서 이름(범주) 및 이름(메뉴 항목)을 선택합니다.
  2. 하위 쿼리는 @g 및 @r을 각각 NULL 및 0으로 초기화한 메뉴 테이블(m)과 테이블(n) 간의 교차 조인을 사용합니다.
  3. 메뉴 항목 테이블과의 JOIN은 메뉴 ID를 기준으로 메뉴 항목 이름을 지정합니다.
  4. CASE 문은 동일한 카테고리 내의 각 행에 대해 1씩 증가하여 행 위치 값을 할당합니다. 새 카테고리가 발견되면 카운터를 1로 재설정합니다.
  5. WHERE 절은 행 위치 값을 기준으로 각 카테고리의 상위 5개 내의 행만 포함하도록 결과를 필터링합니다.

위 내용은 MySQL의 각 카테고리에서 상위 5개 메뉴 항목을 검색하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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