MySql - 选择是否匹配多个值

标签 mysql

我有一个像这样的数据库:

TagSetMap
id | setId | tagId
------------------
1  |  1    |  1
2  |  2    |  2
3  |  3    |  1
4  |  3    |  2

如果 tagId 匹配 1 和 2,我想检索 setId,我已经能够做到这一点:

SELECT TagSetMap.SetId From TagSetMap 
WHERE TagSetMap.TagId IN (1, 2)
GROUP BY TagSetMap.SetId HAVING COUNT(*) = 2

但是,如果我尝试获取类似 tagID = 1 的内容,此查询将不起作用,因为即使使用以下查询,它也会返回 SetId = 1 和 SetId = 3:

SELECT TagSetMap.SetId From TagSetMap 
WHERE TagSetMap.TagId IN (1)
GROUP BY TagSetMap.SetId HAVING COUNT(*) = 1

有没有办法修改查询,以便它只提供与我的目标集(而不是超集)明确匹配的结果?

谢谢!

最佳答案

select setId
from your_table
where tagId in (1,2)
group by setId
having sum(tagId = 1) > 0
or count(distinct tagId) = 2

关于MySql - 选择是否匹配多个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31361383/

相关文章:

c# - 选择特定单选按钮时在 Gridview 中显示记录

c# - 有没有办法将 sql 插件包含到我的 c# 应用程序中

MySQL 错误访问被拒绝

mysql - 如何通过显示最新行数据来使用组

java - JDBC数据库访问、插入元组

mysql - Ruby:Sequel gem 插入到 Mysql

mysql - 将 Oracle sql 查询转换为 mysql

javascript - 使用 NodeJs 在 MySql 中保存用户信息

mysql - 数据库分析 - 带有定时条目的行

mysql - 将数据发送到数据库失败