Skip to content

SQL 查询每个分组的前 N 条数据

方法: 巧用 row_number() 函数

使用 row_number() 函数生成行号,可用行号作为条件,查询分组排序后的 N 条数据。

例子

查询每组排序后的第 1 条数据:

sql
-- 每组排序后的第一条数据
SELECT * FROM (
    SELECT evnt.id AS event_id
        , row_number() over(partition by evnt.lead_id
                            order by evnt.start_time DESC, evnt.update_time DESC)
    FROM crm_event evnt
) t1
WHERE row_number = 1

Released under the MIT License.