MySQL
[MySQL] 그룹 별 상위 n 개
야챔
2021. 7. 19. 19:57
sort 는 D, T, O 3개가 있고 group by sort를 하여서 D, T, O 의 데이터들을 상위 각 각 5개씩 불러올 것이다.
RANK(), ROW_NUMBER()를 사용하여 각각 5개의 데이터 뽑아왔다.
SELECT * FROM (
SELECT *, RANK() OVER (PARTITION BY qna.sort ORDER BY qna.question ASC, qna.id ASC) AS a
FROM QnAQuestion AS qna
) AS rankrow
WHERE rankrow.a <= 5;
결과
* UNION ALL의 방법도 있음
참고한 블로그의 CROSS APPLY는 MySQL에서 불가한듯
참고 : https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=easternsun&logNo=220166275377