MySql - 选择是否匹配多个值

时间:2015-07-11 20:14:13

标签: mysql

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

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

我想检索setId,如果tagId匹配1 AND 2,我可以用它来做:

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

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

谢谢!

1 个答案:

答案 0 :(得分:0)

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