我真的无法通过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
因此,我不仅需要按水果分组,还需要颜色(所有独特的)。
任何建议或解决方案?谢谢!
答案 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