我有一个交叉引用表:
ID | tag
1 | 4
1 | 5
1 | 6
2 | 4
2 | 5
2 | 8
3 | 2
我需要选择匹配的 IDall一组标签。例如,如果给我标签'4','5'
我会得到身份证'1','2'
。如果给我标签'4','2'
我不会得到任何 ID,因为没有匹配的 IDall的标签。
另外,如果给我标签'4','9'
那么我也不应该得到任何结果 ID,因为搜索'9'
会导致NULL
值,因此没有 ID 匹配all标签。
这两天我一直在拔头发。希望有人能帮助我。
该查询的想法是,您需要将记录数与您在查询中提供的值的数量进行匹配。WHERE
clause.
SELECT ID
FROM tableName
WHERE tag IN (4, 8)
GROUP BY ID
HAVING COUNT(*) = 2
- SQLFiddle 演示 http://sqlfiddle.com/#!2/29653/2
如果没有在标签上为每个 ID 指定唯一约束,则DISTINCT
需要
SELECT ID
FROM tableName
WHERE tag IN (4, 8)
GROUP BY ID
HAVING COUNT(DISTINCT tag) = 2
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)