2009-06-21 58 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

相關問題