MySql의 각 카테고리에서 상위 3개 행 선택
수많은 레코드와 카테고리 열이 있는 테이블에서 검색하는 작업이 발생합니다. 각 카테고리의 상위 2개 기사만 표시됩니다. 이를 달성하기 위해 사용자는 처음에 검색된 행 수를 범주당 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
@rownum 및 @category 변수는 각각 행 번호와 현재 카테고리를 추적하는 데 사용됩니다. 이러한 변수를 사용하여 해당 카테고리 내 각 행의 순위가 결정되고 상위 3개 순위 내의 항목이 선택됩니다.
결과 세트 사용자 정의
원하는 열만 반환되는 경우 아래 설명과 같이 SELECT 문에 필요한 열을 지정합니다.
SELECT x.articleid, x.title 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
위 내용은 분석 기능 없이 MySQL의 각 범주에서 상위 3개 행을 가져오는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!