mysql - MySQL Where IN 必须匹配所有值
问题描述
我的 sql 脚本:
select
pack_id
from
pack_product pp
where
pp.product_id in (2,1)
group by
pack_id
数据示例:
pack_id | product_id
1 | 1
2 | 1
2 | 2
我只想返回 pack_id 2 因为匹配所有值,但是这个脚本返回 pack_id 1 和 2。
解决方案
尝试使用 having 子句将过滤约束应用于pack_id
具有所有可能值的 s 组,例如
架构(MySQL v5.7)
CREATE TABLE pack_product (
`pack_id` INTEGER,
`product_id` INTEGER
);
INSERT INTO pack_product
(`pack_id`, `product_id`)
VALUES
('1', '1'),
('1', '1'),
('2', '1'),
('2', '2');
查询 #1
select
pack_id
from
pack_product pp
group by
pack_id
having
COUNT( DISTINCT CASE WHEN pp.product_id in (2,1) THEN pp.product_id END)=2;
pack_id |
---|
2 |
推荐阅读
- node.js - 使用 Node.js 和 Amazon S3 将文件直接传送到客户端
- css - Angular 5 动画进入 (void => state) 工作但离开 (state => void) 不工作
- apache-kafka - Kafka producer api vs Apache Storm 的 KafkaBolt
- javascript - 1 个长度项目上的 Javascript“无法读取未定义的属性‘标题’”
- tomcat - 使用 jakarta 连接器到 tomcat 在 iis 中截断的 html 文档
- haskell - 我在哪里定义任意实例?
- smali - 如何在 Smali 中显示系统消息?
- python - 使用请求 python 在网页上抓取 AJAX 内容
- regex - 如何使用正则表达式拆分多个大写/分隔符/文本?(VBA)
- vb.net - 如何从 TextBox 中搜索并从 SQL 数据库中填充 DataGridView 的特定列?