집 >데이터 베이스 >MySQL 튜토리얼 >MySQL의 각 카테고리에서 상위 2개 기사를 선택하는 방법은 무엇입니까?
MySQL 쿼리: 각 카테고리에서 상위 2개 기사 선택
MySQL에서는 테이블에서 지정된 수의 행을 추출하는 경우가 많습니다. LIMIT 절을 사용합니다. 그러나 그룹화를 기반으로 여러 행을 선택해야 하는 경우에는 다른 접근 방식이 필요합니다. 이 문서에서는 테이블의 각 범주에서 두 개의 행을 선택하는 특정 시나리오를 다룹니다.
원래 사용자는 행을 제한하는 뷰를 만든 다음 하위 쿼리를 사용하여 원하는 항목을 검색하여 이를 달성하려고 했습니다. 기록. 그러나 이 접근 방식으로 인해 총 2개의 레코드만 반환되었습니다.
해결책은 일반적으로 창 기능이라고 하는 기능을 활용하는 것입니다. MySQL은 기본적으로 윈도우 기능을 지원하지 않지만 다음과 같이 사용자 정의 변수를 사용하여 해당 기능을 에뮬레이트하는 것이 가능합니다.
SELECT x.* FROM ( SELECT t.*, CASE WHEN @category != t.category THEN @rownum := 1 ELSE @rownum := @rownum + 1 END AS rank, @category := t.category AS var_category FROM TBL_ARTIKUJT t JOIN (SELECT @rownum := NULL, @category := '') r ORDER BY t.category ) x WHERE x.rank <= 3;
수정된 쿼리에서:
이 접근 방식은 창 기능을 효과적으로 에뮬레이트하여 각 범주에서 원하는 행을 그룹화하고 선택합니다. 원래 열만 검색하려는 경우 외부 쿼리를 수정하여 x.* 대신 특정 열 이름을 지정할 수 있습니다.
위 내용은 MySQL의 각 카테고리에서 상위 2개 기사를 선택하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!