我有一个包含以下字段的表...
id category_id product_id
1 1 1001
2 2 1001
3 1 1003
4 4 1001
5 1 1005
现在我正在尝试使用类别ID获取产品ID。
假设在我的查询字符串中,我通过www.demo.com/?category=1,2,4
我希望得到符合所有价值(1,2,4)的产品。所以在这种情况下它应该只返回1001。
我怎样才能做到这一点?
答案 0 :(得分:5)
使用IN()
:
SELECT * FROM table WHERE category_id IN(1,2,4);
答案 1 :(得分:5)
您可以将IN()与GROUP BY和HAVING结合使用
SELECT
product_id
FROM
your table
WHERE
category_id IN (1, 2, 4)
GROUP BY
product_id
HAVING
COUNT(DISTINCT id) = 3;
<强>解释强>
使用COUNT(DISTINCT id)=您检查此product_id是否在您选中的每个类别中。
<强> DEMO 强>
答案 2 :(得分:1)
一般情况下,我会使用VMai上面的解决方案,但只是为了给你另一个选项,你可以自己加入表,每个可能的category_id一个: -
SELECT a.product_id
FROM table a
INNER JOIN table b ON a.product_id = b.product_id
INNER JOIN table c ON b.product_id = c.product_id
WHERE a.category = 1
AND b.category = 2
AND c.category = 4