考虑下表:
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
下)进行此操作?可能有数百万id
s。
更新
谢谢,@LukášLalinský。引用您链接到的PostgreSQL文档:
DISTINCT ON
(表达式[,...])仅保留每个的第一行 给定表达式求值等于的行集...请注意,每个集合的“第一行”是 除非ORDER BY
用于确保所需的行,否则不可预测 首先出现。