mysql - 如何从一列的结果列表中选择第二列作为引用?

标签 mysql sql

我有一个包含此数据的 sku_attributes 表

attribute_id    sku_id
1                   1
3                   1
10                  1
1                   2
4                   2
10                  2
1                   3
5                   3

假设我有一个包含三个值的结果集

1, 3, 10

我想查询所有与attribute_id列上的结果集完全匹配的数据。 每个结果的 sku_id 列必须具有相同的值。 预期的结果应该是这样的:

attribute_id    sku_id
1                   1
3                   1
10                  1

我尝试使用 IN 语句,但返回了与结果集中的任何数据匹配的所有内容

select * from sku_attributes sa
where sa.attribute_id in
    (1, 3, 10)

最佳答案

sku_id 分组,只取那些除了你指定的没有其他 attribute_id 的组和你想要的所有组

select sku_id 
from sku_attributes
group by sku_id
having sum(attribute_id not in (1, 3, 10)) = 0
and sum(attribute_id = 1) > 0
and sum(attribute_id = 3) > 0
and sum(attribute_id = 10) > 0

关于mysql - 如何从一列的结果列表中选择第二列作为引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55084822/

相关文章:

C# mysql 将大数据表上传到 mysql db 表的最佳方法

mysql - 选择 IF THEN ELSE 语句

php - 将 mysql 传递到 web root 之上的 php 脚本中,有什么更好的吗?

sql - 搜索 Oracle CLOB 列的最佳方法是什么?

sql - 使用SMO从SQL脚本出单个对象

sql - 将数据复制到另一个表中

java - Hibernate 一类映射到多个表

java - 如何从 MySQL 加载准确的行数到 jTable 并对剩余的行进行分页?

sql - 返回虚拟列的 MySQL 选择?

mysql - SQL "group by"使用优先级