1
我的數據庫:PostgreSQL的:一個訂單後返回不同的行BY
SELECT * FROM odds ORDER BY created_at DESC;
runner_id | value | created_at
-----------+-------+----------------------------
365910 | 5 | 2017-03-13 14:29:45.404927
365911 | 2.9 | 2017-03-13 14:29:45.404927
365912 | 7 | 2017-03-13 14:29:45.404927
365910 | 5 | 2017-03-13 14:29:02.654532
365911 | 3 | 2017-03-13 14:29:02.654532
365912 | 7 | 2017-03-13 14:29:02.654532
365910 | 5.5 | 2017-03-13 14:28:22.733787
365911 | 3 | 2017-03-13 14:28:22.733787
365912 | 7 | 2017-03-13 14:28:22.733787
365910 | 5.5 | 2017-03-13 14:25:42.885042
365911 | 3 | 2017-03-13 14:25:42.885042
365912 | 7.5 | 2017-03-13 14:25:42.885042
365913 | 10 | 2017-03-13 14:25:42.885042
365910 | 5 | 2017-03-13 14:25:21.842275
365911 | 3 | 2017-03-13 14:25:21.842275
365912 | 7.5 | 2017-03-13 14:25:21.842275
365913 | 10 | 2017-03-13 14:25:21.842275
我要找的DISTINCT runner_id行,具有最高created_at。這是我想要的結果:
runner_id | value | created_at
-----------+-------+----------------------------
365910 | 5 | 2017-03-13 14:29:45.404927
365911 | 2.9 | 2017-03-13 14:29:45.404927
365912 | 7 | 2017-03-13 14:29:45.404927
365913 | 10 | 2017-03-13 14:25:42.885042
這似乎很容易,但我無法把握它。我開始認爲這是不可能的,因爲ORDER BY是最後發生的事情,我需要SQL來對行進行排序,然後在runner_id上選擇DISTINCT。
'明顯的()'通常是更快然後利用窗口函數 –
@a_horse_with_no_name我不是太熟悉'DISTINCT ON',但我將不勝感激您的校對我的更新答案。 –
「(..)」部分中的列不會自動成爲選擇列表的一部分,因此您需要爲其添加「runner_id」。 –