我想按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组中按时间顺序排列。或者您也可以说排序记录组。
感谢快速帮助:)
答案 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