mysql等效的IN()子句代替逻辑AND

时间:2012-08-15 20:14:08

标签: mysql

假设我有一张表在两个表之间建立联结......就像这样:

id_product | id_category
-----------------
11 | 22
11 | 33
12 | 22
12 | 33

我希望根据搜索到的类别ID列表获取id_products(distinct)。

如果我使用IN()子句,id_categories列表使用逻辑OR。

如何使SELECT查询具有提交的id_categ列表的逻辑AND?

示例:我希望所有属于22类 AND 33的id_products(可能还有5个以上的分类ID)

我找到了这个答案: Using MySQL IN clause as all inclusive (AND instead of OR) ...但查询混合了多个表...我只想在单个表上查询,即结点。

2 个答案:

答案 0 :(得分:8)

阅读你的链接,我认为它会像

select id_product 
from yourTable
where id_category in (--your List goes Here)
group by id_product 
having count(distinct id_category) = NumberOfElementsOfYourList

你应该使用= if只想获得id_category,但没有其他id_category。 如果没有,请使用> =

答案 1 :(得分:1)

select id_product
from your_table
where id_category in (22, 33)
group by id_product
having count(distinct id_category) = 2

您可以添加having子句来计算找到的id_category。例如,如果您查找5个ID,则必须更改2子句中5中的having