假设我有一张表在两个表之间建立联结......就像这样:
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) ...但查询混合了多个表...我只想在单个表上查询,即结点。
答案 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
。