考虑下表:
id | x | y
----+----+-----
1 | 10 | 100
1 | 20 | 120
1 | 30 | 130
2 | 10 | 130
2 | 20 | 130
2 | 30 | 130
3 | 20 | 130
(7 rows)
我希望每个
id
都有一个任意元组,并有相应的x
和y
值。以下结果正确: id | x | y
----+----+-----
1 | 10 | 100
2 | 20 | 130
3 | 20 | 130
或:
id | x | y
----+----+-----
1 | 30 | 130
2 | 30 | 130
3 | 20 | 130
id
、x
和y
在任何上下文中都不是唯一的。如何在SQL中(在
PostgreSQL
下)实现这一点?可能有几百万个。更新:
谢谢,@LukšLalinský。引用您链接到的PostgreSQL文档:
id
(表达式[,…])只保留每个一组行,其中给定表达式的计算结果等于。。。注意,每组的“第一行”是
不可预测,除非使用
DISTINCT ON
来确保所需的行先出现。
最佳答案
使用DISTINCT ON
子句可以完成以下工作:
SELECT DISTINCT ON (id) id, x, y FROM table
关于sql - PostgreSQL SQL:从每个id查找单个任意元组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7379233/