Mysql 选择id的位置

Mysql 选择id的位置,mysql,select,where,Mysql,Select,Where,我有一张桌子: product_id | filter_id 68 | 2 68 | 4 66 | 1 69 | 4 67 | 1 67 | 5 我想去 `product_id` WHERE `filter_id` = '2' AND `filter_id` = '4' 也就是说,我只需要获得产品id=68 SELECT `product_id` FROM `filter` WHERE `filt

我有一张桌子:

product_id | filter_id
        68 | 2
        68 | 4
        66 | 1
        69 | 4
        67 | 1
        67 | 5
我想去

`product_id` WHERE `filter_id` = '2' AND `filter_id` = '4'
也就是说,我只需要获得
产品id
=68

SELECT `product_id` FROM `filter` WHERE `filter_id` IN (2,4) - unsuitable

如何执行此操作?

您可以使用
分组依据
选择所有同时具有筛选器id 2和4的产品id

select product_id
from mytable
where filter_id in (2,4)
group by product_id
having count(*) = 2 

如果
(product\u id,filter\u id)
不是唯一的,则使用
计数(distinct filter\u id)=2
确保产品同时具有两个filter\u id

您可以这样做:

SELECT `product_id` 
FROM `filter` 
WHERE `filter_id` IN (2,4)
GROUP BY `product_id`
HAVING COUNT(DISTINCT `filter_id`)=2
结果:

product_id
----------
68

结果是

产品id 69如何?为什么不简单地从产品id=68的过滤器中选择*?