如何编写下面的sql查询来查找带有所需标记的内容?

new9mtju  于 2021-07-26  发布在  Java
关注(0)|答案(2)|浏览(315)
contents table
|id|content|
|1|content1|
|2|content2|
|3|content3|
tags table
|id|tag|
|1|tag1|
|2|tag2|
|3|tag3|
content_tags table
|content_id|tag_id|
|1|1|
|1|2|
|1|3|
|2|1|
|3|1|

现在我想找到同时有tag2和tag3的内容。如何编写这个sql查询?

eqqqjvef

eqqqjvef1#

聚合是一种简单的方法:

select ct.content_id
from content_tags ct join
     tags t
     on ct.tag_id = t.id
where t.tag in ('tag1', 'tag2')
group by ct.content_id
having count(*) = 2;
kxkpmulp

kxkpmulp2#

像下面这样试试

select content_id
  from content_tags  join tags on tag_id=id
  where tags in ('tag1','tag2')
  group by content_id
  having count(distinct tags)=2

相关问题