sql:对记录组进行排序(2列混合)

时间:2020-03-16 15:02:34

标签: sql sql-order-by

我想按2列订购一张桌子。但不是简单的order by col1, col2。以示例为佳-

id, name, time
1, a, 1000
2, b, 950
2, c, 900
1, d, 900

我希望此订单为

id, name, time
1, a, 1000
1, d, 900
2, b, 950
2, c, 900

id和时间顺序的组合。如果您看到此订单按ID排序(但最近的订单优先)。然后在ID组中按时间顺序排列。或者您也可以说排序记录组。

感谢快速帮助:)

2 个答案:

答案 0 :(得分:0)

您可以使用窗口功能:

order by max(time) over (id) desc, id, time desc

此顺序按time上的最大id,然后按id(如果有重复项)排序,最后按每个{{1}中的time排序}。

答案 1 :(得分:0)

得到答案-

SELECT * FROM mytable p1 INNER JOIN (SELECT MAX(time) maxtime, id FROM mytable GROUP BY id) p2 ON p1.id = p2.id ORDER BY maxtime DESC, p1.id, p1.time DESC