我有一个交叉引用表:
ID | tag
1 | 4
1 | 5
1 | 6
2 | 4
2 | 5
2 | 8
3 | 2
Run Code Online (Sandbox Code Playgroud)
我需要选择与所有一组标签匹配的ID .例如,如果给'4','5'我标签,我会得到ID '1','2'.如果给我标签,'4','2'我将不会获得任何ID,因为没有匹配所有标签的ID .
此外,如果给我标签,'4','9'那么我也不应该得到任何结果ID,因为搜索'9'会产生一个NULL值,因此没有ID匹配所有标签.
过去两天我一直在拔头发.希望有人可以帮助我.
Joh*_*Woo 17
查询的想法是您需要将记录数与您在WHERE子句中提供的值的数量相匹配.
SELECT ID
FROM tableName
WHERE tag IN (4, 8)
GROUP BY ID
HAVING COUNT(*) = 2
Run Code Online (Sandbox Code Playgroud)
如果没有为每个ID在标记上指定唯一约束,则DISTINCT需要
SELECT ID
FROM tableName
WHERE tag IN (4, 8)
GROUP BY ID
HAVING COUNT(DISTINCT tag) = 2
Run Code Online (Sandbox Code Playgroud)