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的过滤器中选择*?