我有这个表结构:
product_skus表
| id |
| 1 |
...
product_sku_values表
| product_sku_id | value_id |
| 1 | 1 |
| 1 | 2 |
| 1 | 3 |
...
我需要查询来找到具有三个值ID(
product_sku_id
,1
和2
)的3
。我正在尝试使用此查询:
select product_sku_id from product_sku_values
where product_sku_values.value_id = 1
or product_sku_values.value_id = 2
or product_sku_values.value_id = 3
group by product_sku_id
having product_sku_id = 1
我怎样才能做到这一点?我正在尝试许多可能性,但是没有人给我所需的ID。有人可以帮我吗?
谢谢。
最佳答案
这是一个规范的方法:
select psv.product_sku_id
from product_sku_values psv
where psv.value_id in (1, 2, 3)
group by psv.product_sku_id
having count(distinct psv.value_id) = 3;
如果您知道
product_sku_values
没有重复项,请在count(*)
子句中使用having
。