1

我有一个mysql表

Table A
--------------------
item_id  category_id
--------------------
1        1
1        2
1        4
2        1
2        3

想做一个 sql 查询来选择数组中的所有匹配项

例子:

given category_ids are 1,4 it should return only item_id 1
given category_ids are 1 it should return  item_id 1 and 2

谢谢

4

2 回答 2

0

对于类别 1、4:

SELECT item_id, COUNT(*) c
FROM TableA
WHERE category_id IN (1, 4)
GROUP BY item_id
HAVING c = 2

对于第 1 类:

SELECT item_id, COUNT(*) c
FROM TableA
WHERE category_id IN (1)
GROUP BY item_id
HAVING c = 1

我认为您应该能够看到模式——HAVING子句应该与类别的数量相匹配。

这假设item_id, category_id在表中是唯一的。

于 2013-06-11T03:16:46.667 回答
-1

给定的 category_ids 是 1,4

选择 item_id,category_id

从表 A

WHERE category_id IN (1, 4)

给定的 category_ids 为 1

选择 item_id,category_id

从表 A

WHERE category_id IN (1)

于 2013-06-11T06:21:37.313 回答