MySQL分组查询后获取前N条数据

思路
查询出数据,然后使用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

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_43871678/article/details/111670967