mySQL-在两列中选择唯一值

mySQL-在两列中选择唯一值,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 |

我真的找不到一个简单的,甚至任何通过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
现在,我想要输出——像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,对不起,我正在编辑文本。这是不正确的。我说你需要看两列,而不是一列。再看看这个例子。