如何编写一个sql来获取此动态表中的记录?

时间:2013-03-20 14:05:22

标签: mysql sql

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

结构是这样的:

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

所以当我传递多值参数

  • 传递值A B结果itemid 1
  • 传递值B结果itemid 1 2
  • 传递值B C结果2

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

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

SELECT itemid FROM mytable WHERE value ='A' 相交 SELECT itemid FROM mytable WHERE value ='B'