MySql分组查询前N条记录

Sql语句

SELECT 
    a.*
FROM
    lf_comment AS a,
    (SELECT 
        GROUP_CONCAT(id order by id desc) AS ids
    FROM
        lf_comment
    GROUP BY root_id) AS b
WHERE
    FIND_IN_SET(a.id, b.ids) BETWEEN 1 AND 2
ORDER BY a.root_id ASC, a.id DESC;

SQL语句解析

GROUP_CONCAT得到每组用逗号分隔的列值,最大长度可以通过group_concat_max_len环境变量设置。
find_in_set返回id在ids中的位置,不存在返回0。
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容