SQL select:适合两个id

时间:2014-10-20 10:41:35

标签: mysql sql

你可以帮我查询数据库,我需要选择具有相同组合ID的产品。 例如ID为70和75的产品。它们都有过滤器1和12。

IN不会工作,它也需要#66因为它有过滤器1那里,但第二个是11,这不是我需要的......

  product_id | filter_id
  ______________________
  66         | 1
  66         | 11
  68         | 9
  69         | 13
  70         | 1
  70         | 12
  71         | 14
  72         | 4
  72         | 17
  73         | 7
  73         | 14
  74         | 16
  75         | 1
  75         | 12

4 个答案:

答案 0 :(得分:0)

试试这个:

SELECT t1.*
  FROM table AS t1
  JOIN table AS t2 ON t1.product_id = t2.product_id
 WHERE t1.filter = 1
   AND t2.filter = 12

答案 1 :(得分:0)

SELECT  Product_ID
,       Filter_ID
FROM    Your_Table a
WHERE   Filter_ID = 1
   AND  EXISTS (
                 SELECT     NULL
                 FROM       Your_Table b
                 WHERE      Filter_ID = 12
                       AND  b.Product_ID = a.Product_ID
               )

答案 2 :(得分:0)

如果你想要具有完全相同的id(而不是具体的1和12)的对,那么我建议使用group_concat()列出id然后再加入以找到重复项。以下内容列出了重复的过滤器列表及其产品列表:

select filters, count(*) as numdups, group_concat(product_id) as products
from (select product_id, group_concat(filter_id order by filter_id) as filters
      from table t
      group by product_id
     ) pf
where count(*) > 1;

答案 3 :(得分:0)

您可以通过以下方式使用群组:

SELECT
     product_id,
     COUNT(*) cnt
FROM
     tablename
WHERE
     filter_id IN (1,12)
GROUP BY
     product_id
     HAVING COUNT(*) = 2