我有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查询中的内容才能仅获取包含标签“ Published”和“ Favorites”的帖子。我尝试在GROUP BY之前插入某些条件,例如
WHERE (',' || tags || ',') LIKE '%,1,2,%'
但这没有帮助。
您可以尝试子选择来查找两者。我假设是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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句