-4

我有一个表来存储动态属性

结构是这样的:

id    itemid  value
----  ------  ------
1     1       A
2     2       B
3     3       C
4     1       B
5     2       C

所以当我传递多值参数时

  • 传值A B结果 itemid1
  • 传值B结果 itemid1 2
  • 传值B C结果2

这个sql怎么写?顺便说一句,我使用 mysql

4

2 回答 2

2

假设(itemid, value)有一个UNIQUE约束:

SELECT itemid
FROM tableX
WHERE value IN ('A', 'B')       -- the list
GROUP BY itemid
HAVING COUNT(*) = 2 ;           -- the size of the list
于 2013-03-20T14:58:11.367 回答
1

您应该能够使用SQL INTERSECT查询获得您正在寻找的行为。这是一个简短的例子。

SELECT itemid FROM mytable WHERE value = 'A' INTERSECT SELECT itemid FROM mytable WHERE value = 'B'

于 2013-03-20T14:15:32.847 回答