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 吗?

4

3 回答 3

1

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

于 2009-06-21T11:11:34.720 回答
1

这个查询应该在 MySQL 上解决问题(在 MySQL 5 上测试):

select a.column1, a.column2 from (select * from foo b order by rand()) a group by a.column2;
于 2009-06-22T01:51:54.733 回答
0

您可能想尝试诸如ROW_NUMBER() OVER(ORDER BY column1 asc)拉回您的行号并以这种方式过滤它。

你没有提到你使用什么风格的 SQL,我从记忆中回忆了这一点——但这种事情在 Oracle 9 中有效。

于 2009-06-21T11:43:47.993 回答