mysql - SELECT 在同一列和 UNIQUE 值上具有多个 WHERE 条件
问题描述
我认为这很容易,但我需要一些帮助来解决它:
id product option suboption
-----------------------------------
118 A 1 1
119 A 2 2
120 A 3 1
121 B 1 2
122 B 2 2
123 B 3 1
124 C 1 1
125 C 2 2
126 C 3 1
我需要找到所有独特的产品,其中选项 = 1 然后子选项 = 1,选项 = 2 然后子选项 = 2,选项 = 3 然后子选项 = 1。
在这个例子中,满足我要求的是产品 A 和 C。
我该怎么做这个查询?
解决方案
您可以使用group by
和having
。这是一种方法:
select product
from t
where (option, suboption) in ( (1, 1), (2, 2), (3, 1) )
group by product
having count(distinct option) = 3;
在您的示例数据中,每个产品只有一个选项。如果是这种情况,请使用:
having count(*) = 3
而不是count(distinct)
.
推荐阅读
- php - 有没有办法在linkedin上嵌入来自另一个网站的视频?
- django - 如何手动渲染表单集?
- javascript - setInterval 不能连续工作并在第一次迭代后停止
- java - JAVA中每个字母的字典二叉树
- jwt - SignalR Dotnet 核心 3.1:身份验证 POST /negotiate 返回 200 但 GET /hub 返回 401
- go - 为什么我的结构值在使用两个 goroutine 时在以下情况下不更新?
- visual-studio-code - 使用 Code Runner 我无法以任何编程语言运行程序
- javascript - 如何在 DataTables javascript 插件中输入表的链接?
- node.js - 如何创建一个可以导入和包装现有功能的 npm 包?
- javascript - Flask 区分不同的 post 请求