假设我有一个 user_data 表,其中包含多个用户记录。
id user_id col1 col2 created_at
1 1 abc x 2019-01-04
2 2 def x 2019-02-01
3 3 ghi x 2019-03-05
4 2 jkl x 2019-07-07
5 2 mno x 2019-06-01
6 3 pqr x 2019-07-11
现在,我想在单个查询中选择每个用户的前10条最新记录。
答案 0 :(得分:1)
使用row_number()
:
select ud.*
from (select ud.*,
row_number() over (partition by user_id order by created_at desc) as seqnum
from user_data ud
) ud
where seqnum <= 10;