2016-03-01 24 views
0

我試圖寫一個查詢,選擇不同uid的,但我想選擇那些不同uid的訂單在modified_at列。查詢表通過選擇不同的項目給出日期戳

例子:

Table_A 

uid data_value modified_at 
=== ========== =========== 
1  a   1/1/2016 
1  b   1/2/2016 
1  c   1/3/2016 
2  d   1/1/2016 
2  e   1/2/2016 
3  f   3/1/2016 
3  g   3/3/2016 
3  h   3/4/2016 
4  i   2/1/2016 
5  j   1/5/2016 
5  k   1/6/2016 

所以我想選擇已修改的最近不同的UID。

我不確定是否有一個快速查詢可以做到這一點,而不是單獨將信息拉到腳本中進行修改。

寫現在,我所能做的就是

select distinct uid, data_value, modified_at 
from Table_A (...and other stuff if I want to join and do things) 
+0

待辦事項你需要data_value的值嗎?否則,你可以通過uid進行分組。 – Aret

+0

@Aret是的。我需要data_value。 Table_A是一些連接的結果,並且存在比data_value更多的值。我只是試圖簡單地解釋S.O的問題 –

回答

0

使用Windows功能row_number()和使用CTE構造結了更好的閱讀

WITH cte as (
     SELECT *, 
      row_number() over (PARTITION BY uid ORDER BY modified_at DESC) as rn 
     FROM TableA 
) 
SELECT * 
FROM cte 
WHERE rn = 1 
1

您可以使用DISTINCT ON

SELECT DISTINCT ON (uid) uid, data_value, modified_at 
FROM Table_A 
ORDER BY uid, modified_at DESC