MySQL에서 범주별 상위 행 선택
테이블의 각 범주에서 제한된 수의 행을 검색하려면 분석 기능을 활용할 수 있습니다. . 그러나 MySQL은 이러한 기능을 직접 제공하지 않습니다. 그럼에도 불구하고 변수를 사용하여 이를 에뮬레이트하는 것은 가능합니다.
분석 함수 에뮬레이션
다음 MySQL 쿼리는 분석 함수의 기능을 에뮬레이트하여 각 범주에 대해 상위 3개 행을 선택합니다. :
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 설명
- 하위 쿼리는 TBL_ARTIKUJT 테이블에서 모든 행을 선택하고 두 개의 세션 변수 @rownum 및 @category를 초기화합니다. 현재 순위와 카테고리를 추적합니다.
- 각 행에 할당된 순위는 해당 카테고리 내 위치를 나타냅니다. 새 범주가 발견되면 순위가 1로 재설정됩니다.
- var_category는 각 행의 범주를 저장하는 데 사용됩니다.
- 외부 SELECT 문은 순위가 있는 행만 선택하여 하위 쿼리를 필터링합니다. 3보다 작거나 같음.
이 방법을 사용하면 에서 지원되지 않는 분석 기능에 의존하지 않고 원하는 기능을 구현할 수 있습니다. MySQL.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3