我有下表。
id name data
1 DAN xxxxxxxxx
2 ANTONY xxxxxxxxx
3 DAN xxxxxxxxx
4 DAN xxxxxxxxx
5 JOSEPH xxxxxxxxx
6 ANTONY xxxxxxxxx
7 JOSEPH xxxxxxxxx
我想首先使用ID对表进行排序,然后按名称分组。 例如
7 JOSEPH xxxxxxxxx
5 JOSEPH xxxxxxxxx
6 ANTONY xxxxxxxxx
2 ANTONY xxxxxxxxx
4 DAN xxxxxxxxx
3 DAN xxxxxxxxx
1 DAN xxxxxxxxx
我尝试了ORDER BY的各种组合,并尝试了ORDER BY FIELD但无法获得所需的结果
答案 0 :(得分:2)
尝试使用
select *, (select max(id) from tab t2 where t2.name = t1.name) m
from tab t1
order by m desc, id desc;
答案 1 :(得分:0)
您还可以使用窗口功能获取每个名称的最大ID,并将其用于订购目的。
SELECT *,
MAX(id) OVER(PARTITION BY name ORDER BY id DESC) Ord
FROM table t
ORDER BY Ord DESC
答案 2 :(得分:0)
您可以在order by
中使用子查询,因此您可以将其表达为:
select t.*
from t
order by (select max(id) from t t2 where t2.name = t.name) desc, id desc;