我有3张桌子
**Posts**
id post_title
1 First_Post
2 Second_Post
3 Third_Post
**Tags**
id tag_name
1 Published
2 Favorites
3 Deleted
**PostTagRelatives**
id post_id tag_id
1 1 1
2 1 2
3 2 3
我使用查询
SELECT p.*, GROUP_CONCAT(PostTagRel.tag_id) AS tags FROM Posts p left
join PostTagRelatives PostTagRel on PostTagRel.post_id = p.id GROUP BY
p.id
并且它工作正常。
我需要添加到sql查询以仅获取包含“已发布”和“收藏夹”标签的帖子。我尝试在GROUP BY之前插入一些条件,如
WHERE (',' || tags || ',') LIKE '%,1,2,%'
但它没有帮助。
答案 0 :(得分:1)
您可以尝试使用子选择来查找两者。我假设PK并且帖子不能多次使用相同的标签。
SELECT p.*, GROUP_CONCAT(PostTagRel.tag_id) AS tags
FROM Posts p
left join PostTagRelatives PostTagRel on PostTagRel.post_id = p.id
WHERE 2 = ( SELECT COUNT(*)
FROM PostTagRelatives PTR
INNER JOIN Tags T ON (T.tag_id = PTR.tag_id AND PTR.post_id = p.post_id )
WHERE T.tag_name IN ('Published','Favorites') )
GROUP BY p.id