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查询?
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;
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
2条答案
按热度按时间eqqqjvef1#
聚合是一种简单的方法:
kxkpmulp2#
像下面这样试试