【发布时间】:2021-01-20 17:19:02
【问题描述】:
我有一个非常简单的匹配表,其中包含以下信息(在现实生活中,该表包含其他表的不同 ID,而不是水果/颜色,但我希望水果示例更容易理解):
[ID] [FRUIT] [POSSIBLECOLORS]
1 apple green
2 apple red
3 apple yellow
4 banana yellow
5 banana brown
6 strawberry red
7 cherry red
我现在要做的是一个选择,例如,它只返回同时匹配 POSSIBLECOLORS green 和 yellow 的水果。在这个例子中,我想要的结果是“苹果”,因为它是唯一一种同时匹配两种颜色的水果。
如果我这样做
SELECT * FROM table WHERE possiblecolors = green AND possiblecolors = yellow GROUP BY fruit
那么我的结果当然是 NULL,因为在一行中没有任何条目匹配。
如果我这样做
SELECT * FROM table WHERE possiblecolors = green OR possiblecolors = yellow GROUP BY fruit
那么我的结果当然是“apple”和“banana”,因为它们都有一个黄色的条目。
那么我该如何设计一个只返回“apple”的 MySQL 选择呢?
【问题讨论】:
-
使用 HAVING 确保返回两种不同的颜色。
-
请学习如何使用
GROUP BY。您的查询不应该运行。