2011-11-29 92 views
1

對於表(成分)是這樣的:MySQL顯示一行不止一次出現不同的值?

+-----+-----+ 
|id |fruit| 
+-----+-----+ 
| 1 | or | 
| 1 | ban | 
| 2 | or | 
| 2 | or | 
+-----+-----+ 

我想有應該產生這樣的結果的查詢:

ID 與兩種類型的水果有關。

我不在乎多行是否具有相同的數據,我只關心具有相同ID的行是否具有不同的結果。

例如id 2只與兩行中的一種水果有關,我不在乎!

我有什麼,我想實現的僞代碼,但沒有任何MySQL的

Select all id's 
From the ingredients table 
Group by id 
If group count of id is greater than 1 and has different fruits then display 

我有一種奇怪的感覺,我可能無法做到這一點在MySQL,將不得不使用一些PHP。

感謝您的時間

+0

呃,我想你需要花一些時間學習一下id應該是什麼。提示:如果你有多個具有相同ID的行,你(幾乎可以肯定)做錯了。 –

+0

謝謝,但這個例子並沒有真正顯示我在做什麼,並且由於系統的工作方式,3NF不是最好的! – kaleeway

+0

那麼發佈你的模式。我們不是mindreaders。 –

回答

6

你在SQL僞代碼:

SELECT id 
FROM ingredients 
GROUP BY id 
HAVING COUNT(DISTINCT fruit) > 1 

,如果它是緩慢的,你可以試試這個版本 - MAX()MIN()可能比COUNT(DISTINCT)快 - 雖然它的可讀性:

SELECT id 
FROM ingredients 
GROUP BY id 
HAVING MAX(fruit) > MIN(fruit) 
+0

Ops,同樣的查詢...你更快:upvoted! – Marco

+0

感謝您的查詢,我的數據集很好。 非常感謝@ypercube! – kaleeway

3

試試這個

SELECT id 
FROM your_table 
GROUP BY id 
HAVING COUNT(DISTINCT fruit) > 1 
相關問題