【问题标题】:How to MySQL select from a single matching-table with multiple criteria (AND / OR doesn't work)?MySQL 如何从具有多个条件的单个匹配表中进行选择(AND / OR 不起作用)?
【发布时间】: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

那么我的结果当然是 N​​ULL,因为在一行中没有任何条目匹配。

如果我这样做

SELECT * FROM table WHERE possiblecolors = green OR possiblecolors = yellow GROUP BY fruit

那么我的结果当然是“apple”和“banana”,因为它们都有一个黄色的条目。

那么我该如何设计一个只返回“apple”的 MySQL 选择呢?

【问题讨论】:

  • 使用 HAVING 确保返回两种不同的颜色。
  • 请学习如何使用GROUP BY。您的查询不应该运行。

标签: mysql sql select


【解决方案1】:

如果您只想要水果列表,则使用聚合并具有:

select fruit
from t
where possiblecolor in ('green', 'yellow')
group by fruit
having count(*) = 2;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-10
    • 1970-01-01
    • 1970-01-01
    • 2013-07-17
    • 1970-01-01
    • 2012-08-18
    相关资源
    最近更新 更多