考虑下表:

 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都有一个任意元组,并有相应的xy值。以下结果正确:
 id | x  |  y
----+----+-----
  1 | 10 | 100
  2 | 20 | 130
  3 | 20 | 130

或:
 id | x  |  y
----+----+-----
  1 | 30 | 130
  2 | 30 | 130
  3 | 20 | 130

idxy在任何上下文中都不是唯一的。
如何在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/

10-12 15:56
查看更多