有一个分配给产品的过滤器ID列表。 可以将多个过滤器分配给同一产品。 因此,如果根据传递的过滤器ID
,我正在寻找获取产品ID的查询例如我有
$filter_id = Array
(
[0] => 2
[1] => 12
...
)
在这种情况下,它应该返回产品ID 40我需要所有匹配的过滤器ID以获取特定产品,所以我使用AND
我试过了 SELECT product_id FROM tablename WHERE filter_id = 2 AND filter_id = 12
谢谢
答案 0 :(得分:1)
您的查询
SELECT product_id FROM tablename WHERE filter_id = 2 AND filter_id = 12
将返回 0行,因为不能同时将filterid等于2和12的行,在关系数据库设计中不可能
而是使用IN operator为列指定多个必需值。
SELECT product_id FROM tablename WHERE filter_id IN(2,12)
答案 1 :(得分:0)
以下是如何找到同时具有2,12作为filter_id的产品。
select product_id
from products
where filter_id in (2,12)
group by product_id
having count(distinct filter_id) = 2
您需要更改
having count(distinct filter_id) = 2
到你正在检查的filter_id的数量。
只需在查询中使用filter_id in (2,12)
即可返回所有包含2或12的产品。
<强> DEMO 强>