Mysql SQL选择:适合两个id

Mysql SQL选择:适合两个id,mysql,sql,Mysql,Sql,您能帮我查询数据库吗?我需要选择具有相同组合ID的产品。 例如ID为70和75的产品。它们都有过滤器1和12 在wont工作,它也将需要66,因为它有过滤器1那里,但第二个是11,这不是我需要的 product_id | filter_id ______________________ 66 | 1 66 | 11 68 | 9 69 | 13 70 | 1 70 |

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

在wont工作,它也将需要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
试试这个:

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

如果您想要具有完全相同的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;

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

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

您是否正在尝试使用过滤器1和12获取元素?您的问题还不够清楚。过滤器是否可以超过2个?还有,预期的结果是什么?你想连同过滤器id一起,还是不带…如果你在计数器中添加一个独特的,那就太好了!谢谢你的快速回答!
SELECT
     product_id,
     COUNT(*) cnt
FROM
     tablename
WHERE
     filter_id IN (1,12)
GROUP BY
     product_id
     HAVING COUNT(*) = 2