mySQL - 在两列中选择唯一值

时间:2011-10-03 19:40:43

标签: mysql select unique distinct

我真的无法通过sql找到一个简单甚至任何解决方案来从DB(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

现在我想要输出 - 类似于不同(苹果)和不同(颜色)的东西和排序依据 重量desc:

kiwi   | black  | 3567
banana | green  | 2345
apple  | red    | 34
  • 梨|绿色//不行,因为绿色已经“使用”
  • 香蕉|黄色//不行,因为香蕉已经“使用”

因此,我不仅需要按水果分组,还需要颜色(所有独特的)。

任何建议或解决方案?谢谢!

2 个答案:

答案 0 :(得分:1)

我不清楚为什么香蕉|绿色优于香蕉|黄色(将RIGHT JOIN改为INNER 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

答案 1 :(得分:0)

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