我有一个表来存储动态属性
结构是这样的:
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
假设(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
您应该能够使用SQL INTERSECT查询获得您正在寻找的行为。这是一个简短的例子。
SELECT itemid FROM mytable WHERE value = 'A' INTERSECT SELECT itemid FROM mytable WHERE value = 'B'