9

假设我有一张桌子在两张桌子之间建立连接......就像这样:

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

我想根据搜索到的类别 ID 列表获取 id_products (不同的)。

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

如何进行 SELECT 查询以对提交的 id_categ 列表进行逻辑与?

示例:我想要属于类别 2233 的所有 id_products(可能还有 5 个以上的类别 ID)

我找到了这个答案: 使用 MySQL IN 子句作为全包式(AND 而不是 OR) ...但是查询混合了超过 1 个表...我只想要对单个表的查询,即联结表。

4

2 回答 2

10

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

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。如果没有,请使用 >=

于 2012-08-15T20:18:44.160 回答
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,则必须更改 子句中的 in 25having

于 2012-08-15T20:18:58.793 回答