我正在尝试编写一个选择不同uid
的查询,但我想在uid
列上选择那些不同的modified_at
。{/ p >
示例:
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 :(得分:1)
您可以使用DISTINCT ON
:
SELECT DISTINCT ON (uid) uid, data_value, modified_at
FROM Table_A
ORDER BY uid, modified_at DESC
答案 1 :(得分: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