use*_*054 0 mysql sql greatest-n-per-group
我想按时间DESC选择每个id顺序插入的最后一行
s.no id message status time
1 3 this is msg 1 unread 100001
2 2 this is msg 2 read 100002
3 4 this is msg 3 read 100003
4 3 this is msg 4 unread 100004
5 2 this is msg 5 read 100005
6 3 this is msg 6 unread 100006
Run Code Online (Sandbox Code Playgroud)
我在用
select * from table group by id order by MAX(time) DESC
Run Code Online (Sandbox Code Playgroud)
它给出了正确的id顺序,但行互换了
我希望它像:
s.no id message status time
6 3 this is msg 6 unread 100006
5 2 this is msg 5 read 100005
3 4 this is msg 3 read 100003
Run Code Online (Sandbox Code Playgroud)
帮帮我
您可以将最大时间作为单独的子查询拉出,然后将其重新连接到表中.如果它具有重复的最大时间,则将为id返回多行.
select
t.s.no,
t.id
t.message,
t.status,
t.time
from
table t
inner join (
select
id,
max(time) maxtime
from
table
group by
id
) mt
on mt.id = t.id and t.time = mt.maxtime
order by
t.time desc
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
123 次 |
| 最近记录: |