2011-10-03 133 views
4

我真的無法通過sql找到簡單甚至是任何解決方案來從DB(mySQL)獲取唯一數據。mySQL - 選擇兩列中的唯一值

我會給出一個樣本(簡體):

表T

fruit | color | weight 
----------------------- 
apple | red | 34 
kiwi | red | 23 
banana | yellow | 100 
kiwi | black | 3567 
apple | yellow | 23 
banana | green | 2345 
pear | green | 1900 

,現在我想輸出 - 像不同的(蘋果)和不同的(顏色)在一起,以便通過 重量遞減:

kiwi | black | 3567 
banana | green | 2345 
apple | red | 34 
  • 梨|綠色//不好,因爲綠色已經「使用」了
  • 香蕉|黃色//是不行的,因爲香蕉已經「使用」

所以我不僅需要水果,而且顏色(所有獨特)。

任何建議或解決方案?謝謝!

+2

您似乎想要獨特的顏色,但您的示例結果似乎會完全隨意決定如何選擇顏色。您至少需要一個更重要的要求,如最輕或最重的獨特顏色。 –

+0

保羅,對不起,我正在編輯文本。 – Rok

回答

0
SELECT fruit, color, weight 
FROM t 
GROUP BY fruit, color 
HAVING COUNT(*) = 1 
ORDER BY weight DESC 
+0

這是不正確的。我說你需要看兩列而不只是一列。再看看例子。 – Rok

1

我不清楚爲什麼香蕉|綠色最好的香蕉|黃(改RIGHT JOININNER JOIN的美味水果),所以我希望我已經明白你想要做什麼:

SELECT t1.fruit, t1.color, t1.weight 
FROM 
t AS t1 
RIGHT JOIN 
(
SELECT fruit, color, weight 
FROM t 
GROUP BY 
color 
) AS t2 
ON 
t1.fruit = t2.fruit AND t1.color = t2.color 
GROUP BY fruit 
ORDER BY weight DESC; 

另請注意MySQL如何處理hidden columns in GROUP BY