MySQL分組查詢後獲取前N條資料

Hanyinh發表於2020-12-25

思路
查詢出資料,然後使用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

在這裡插入圖片描述

相關文章