我有一个表来存储动态属性
结构是这样的:
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
答案 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'