从具有相同id的表中随机选择一个

时间:2016-05-31 10:25:06

标签: postgresql

使用postgresql v8.2

例如我有这样一张表:

 id  | va
-----+-----
 123 | 234
 123 | 234
 123 | 456
 234 | 123
 234 | 345
 456 | 678
(6 rows)

我想要的是从表中查询以随机获得具有相同ID

的任何人

它可能会像:

 id  | va
-----+-----
 123 | 234
 234 | 123
 456 | 678
(3 rows)

或者喜欢:

 id  | va
-----+-----
 123 | 456
 234 | 345
 456 | 678
(3 rows)

哪个值并不重要,但必须有一个。 谢谢你提出任何方法。

2 个答案:

答案 0 :(得分:1)

select id, max(va) from table group by id;

正如您所说,va的价值无关紧要。您可以选择任何聚合。

您也可以使用distinct on

select distinct on (id) id, va from table order by id, random();

答案 1 :(得分:0)

您在寻找SELECT id, max(va) FROM tablename GROUP BY id ; 吗?它只会为表中的每个Id选择一行。

Postgresql group by

  

PostgreSQL GROUP BY子句与之合作使用   SELECT语句将表中的那些行组合在一起   相同的数据。

您的情况是否可以进行以下查询:

{{1}}