我有一个包含此数据的 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/