mysql产品在类别中选择

我有一个名为product_cats的表,相关的列是

product_id,
cat_id

假设我们有类别1,2,3,4和5.

我需要cat_id 1和2以及(3或4或5)中的所有product_id.

我现在有一些工作方法,但它们都非常慢.

有人可以给我一些神秘的魔法吗?

编辑:

因此,产品需要同时属于1类和2类,以及3类,4类或5类.

这是我试图让这个想法更好的尝试之一

SELECT
  p1.product_id
FROM
  product_cats p1 JOIN product_cats p2 ON ( p2.product_id = p1.product_id )  
  JOIN product_cats p3 ON ( p3.product_id = p1.product_id )  
  JOIN product_cats p4 ON ( p4.product_id = p1.product_id )   
WHERE
  (p1.category_id=? AND p2.category_id=? AND p3.category_id=?)
  OR 
  (p1.category_id=? AND p2.category_id=? AND p4.category_id=?)

最佳答案 使用Mysql,你可以通过使用group by和sum函数和having子句来实现你的逻辑

select product_id
from product_cats
group by product_id
having sum(cat_id = 1) > 0
and sum(cat_id = 2) > 0
and sum(cat_id in(3,4,5)) > 0

上面的查询将返回product_ids,其中cat_id为1,cat_id为2,cat_id为3,4,5

点赞