MySQL PHP - SELECT WHERE id = array()

时间:2014-07-17 14:09:43

标签: php mysql sql

我有一个包含以下字段的表...

   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。

我怎样才能做到这一点?

3 个答案:

答案 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