选择具有随机ID的不同名称

时间:2011-12-09 14:21:10

标签: sql postgresql distinct

我有一个带有id和名称的表(一堆与此查询无关的其他内容)。现在我需要一个SQL语句,每个不同的名称返回一行,在该行中我需要名称和一个id(可以是任何id)。

该表看起来像这样:

id | name
---+-----
 1 | a2
 2 | a2
 3 | a4
 4 | a4
 5 | a2
 6 | a3

顺便说一句。使用Postgres 8.4

尝试了分组或加入自我的各种组合。如果不创建额外的表格,这甚至可能吗?

3 个答案:

答案 0 :(得分:4)

任意选择返回每个名字的最小ID。

SELECT name, MIN(id)
    FROM YourTable
    GROUP BY name

答案 1 :(得分:0)

您可以查看PostgreSQL wiki。它显示了如何选择随机行。

您可以使用random()函数使用ORDER BY的{​​{1}}子句选择随机行。例如:

SELECT

然后,您可以使用SELECT id FROM mytable ORDER BY random() 选择不同的名称。您可能需要使用GROUP BY子句限制结果。所以查询看起来像这样:

LIMIT

答案 2 :(得分:0)

select ID, name from table group by name;
相关问题