Mysql - 选择与所有标签匹配的id

2024-01-11

我有一个交叉引用表:

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(使用前将#替换为@)

Mysql - 选择与所有标签匹配的id 的相关文章

随机推荐