2009-06-21 35 views
0

我有一个表有两列,比如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?

回答

1

这个查询应该做的MySQL的伎俩(在MySQL 5测试) :

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

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

+0

不适用于我。我相信必须有更复杂但更好的方法来实现这一点。 – Matias 2009-06-21 11:23:44

+0

我想要一个随机的行。我认为MAX(column1),column2总是返回一个特定的行。 – 2009-06-21 11:35:16

0

你可能想尝试像ROW_NUMBER() OVER(ORDER BY column1 asc)东西拉回来的行数和过滤这种方式。

你没有提到你使用的是什么味道SQL的,我从记忆召回 - 但这种事情在甲骨文工作9

相关问题