我有 3 张桌子:
- 页面(id,名称,描述)
- page_tags(id, page_id, tag_id)
- tag_posts(tag_id, post_id)
给定 pages 表中的一个页面,我想获取 tag_posts 表中的帖子,其中 tag_id 与 page_tags 表中给定页面的所有tag_id 匹配。
例如,如果 3 个表中的条目是:
1)页面:
- [1, '第 1 页', '一些描述']
2)page_tags:
- [1, 1, 1],
- [2, 1, 2]
3)标签帖子:
- [1, 101],
- [2, 102],
- [1, 201],
- [3, 202]
我使用此查询对 3 个表进行了简单的内部连接:
SELECT tp.*
FROM pages p
JOIN page_tags pt ON pt.page_id = p.id
JOIN tag_posts tp ON tp.tag_id = pt.tag_id
WHERE 1
但是,这会从上面的示例 tag_posts 表中返回第 1、2 和 3 行,而我只需要第 1 和 2 行,因为这两行与pages 和 page_tags 表之间的第一个连接中的所有tag_id 行匹配。
请让我知道如何实现这一目标。注意:我使用的是 mysql。