查询如何只返回每个不同列的一个随机行?

时间:2009-06-21 10:58:28

标签: distinct

我有一个包含两列的表,比如column1和column2。 Column2不是唯一的。 对于column2的每个不同值,我想要一个随机行,只有一行,来自表?

即。我的结果集应该具有与column2的不同值的数量一样多的行。

例如:

column1   column2
x         1
y         2
z         1

我希望结果是

column1   column2
x         1
y         2

column1   column2
z         1
y         2

这只能使用SQL吗?

3 个答案:

答案 0 :(得分:1)

SELECT MAX(column1), column2 FROM yourtablename GROUP BY column2

答案 1 :(得分:1)

此查询应该在MySQL上进行操作(在MySQL 5上测试):

select a.column1, a.column2 from (select * from foo b order by rand()) a group by a.column2;

答案 2 :(得分:0)

您可能需要尝试ROW_NUMBER() OVER(ORDER BY column1 asc)之类的内容来撤回行号并按此方式过滤。

你没有提到你使用的SQL的味道,我从内存中回忆起这一点 - 但是这种事情在Oracle 9中有效。