我有这个表结构:
product_skus表
| id |
| 1 |
...
product_sku_values表
| product_sku_id | value_id |
| 1 | 1 |
| 1 | 2 |
| 1 | 3 |
...
我需要查询才能找到product_sku_id
,其中包含三个值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。有人可以帮帮我吗?
感谢。
答案 0 :(得分:2)
这是一种规范方法:
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
。
答案 1 :(得分:0)
您只需使用group by
子句获取所有可能的值,例如:
select product_sku_id, group_concat(value_id)
from product_sku_values
group by product_sku_id;
如果您只对value_id 1,2和3感兴趣,那么您可以添加一个where
子句,例如:
select product_sku_id, group_concat(value_id)
from product_sku_values
where value_id in (1,2,3)
group by product_sku_id;