我有这个表结构:

product_skus表

| id |
| 1  |
...


product_sku_values表

| product_sku_id | value_id |
| 1              | 1        |
| 1              | 2        |
| 1              | 3        |
...


我需要查询来找到具有三个值ID(product_sku_id12)的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

09-10 17:36