mySQL-在两列中选择唯一值
我真的找不到一个简单的,甚至任何通过sql从DB(mySQL)中获取唯一数据的解决方案 我将给出一个示例(简化): 表tmySQL-在两列中选择唯一值,mysql,select,unique,distinct,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 |
fruit | color | weight
-----------------------
apple | red | 34
kiwi | red | 23
banana | yellow | 100
kiwi | black | 3567
apple | yellow | 23
banana | green | 2345
pear | green | 1900
现在,我想要输出——像distinct(苹果)和distinct(颜色)一样,并按顺序排列
重量说明:
kiwi | black | 3567
banana | green | 2345
apple | red | 34
- 梨|绿//不好,因为绿已经“用过了”
- 香蕉黄//不行,因为香蕉已经“用过了”
有什么建议或解决办法吗?谢谢 我不清楚为什么香蕉绿比香蕉黄更受欢迎(将
右键连接
更改为内键连接
,以获得更美味的水果),所以我希望我已经理解了您的意图:
SELECT fruit, color, weight
FROM t
GROUP BY fruit, color
HAVING COUNT(*) = 1
ORDER BY weight DESC
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是如何处理的。您似乎想要不同的颜色,但您的示例结果似乎对如何选择颜色做出了完全任意的决定。您至少还需要一个要求,例如最轻或最重的唯一颜色。Paul,对不起,我正在编辑文本。这是不正确的。我说你需要看两列,而不是一列。再看看这个例子。