MySQL分組查詢後獲取前N條資料
阿新 • • 發佈:2021-01-01
思路
查詢出資料,然後使用group by排序,這樣可以得到分組後的資料,然後我們在select中的查詢欄位內自定義一個欄位,用來獲取其排序順序,最後再在外層加一層,只要獲取前N條資料即可。
例子
SELECT t.*
FROM (
SELECT a.id,
a.type_id,
c.`name` AS typeName,
a.scan_total,
a.`name`,
(
SELECT COUNT(b.id)
FROM course AS b
WHERE b.type_id = a.type_id
AND b.scan_total > a.scan_total
) AS top
FROM course AS a LEFT JOIN course_type AS c
ON c.id = a.type_id
ORDER BY a.type_id ASC,
a.scan_total DESC
) AS t
WHERE t.top < 3