我有三张table。
员额
| 帖子标识|帖子内容|
| - ------| - ------|
| 1个|阿尔法|
| 第二章|贝塔|
帖子标签
| 帖子标识|标签标识|
| - ------| - ------|
| 1个|1个|
| 1个|第二章|
| 第二章|第二章|
标签
| 标签标识|标签名称|
| - ------| - ------|
| 1个|狗|
| 第二章|猫|
在Postgres中,如果我所知道的只是它的一个标签,是否可以进行查询,从帖子和它的两个标签中返回帖子1。
我尝试用下面的查询来实现这一点,但没有成功:
SELECT posts.post_id, posts.post_content, tags.tag_name
FROM posts
JOIN posts_tags
ON posts.post_id = post_tags.post_id
JOIN tags
ON post_tags.tag_id = tags.tag_id
WHERE tags.tag_name = Dogs;
我希望得到以下结果集
| 帖子标识|帖子内容|标签名称|
| - ------| - ------| - ------|
| 1个|阿尔法|狗|
| 1个|阿尔法|猫|
我应该如何修改我的查询以实现此结果?
1条答案
按热度按时间vcirk6k61#
您的查询不起作用,因为您直接在连接表上进行筛选,从而只挑选满足条件(
WHERE tags.tag_name = Dogs
)的记录。相反,您可以先找到具有“tag_name"的“post_id”,然后过滤连接操作的结果。
检查here演示。