gpt4 book ai didi

mysql - sql - 在同一列上连接3个表

转载 作者:行者123 更新时间:2023-11-29 13:14:52 25 4
gpt4 key购买 nike

表格是:

blogs
blog_id, user_id, blog_content

users
user_id, user_name

comments
comment_id, blog_id, user_id, comment_content

我想要做的是获取:博客内容、创建博客的人的用户名、与特定博客关联的评论内容以及评论作者的用户名。我不知道如何获取最后一个,即评论作者的用户名。到目前为止我有这个:

SELECT blogs.user_id, blogs.blog_id, blogs.blog_content, 
users.user_id, users.name,
comments.comment_id, comments.blog_id, comments.user_id, comments.comment_content
FROM blogs
LEFT JOIN users ON users.user_id = blogs.user_id
LEFT JOIN comments ON comments.blog_id = blogs.blog_id
WHERE blogs.blog_id = 2

我如何在此查询中加入表 comments 和 users,并获取博客创建者和评论作者的 user_name?

最佳答案

您需要将 comments 表连接回 users 表的另一个副本:

SELECT b.user_id, b.blog_id, b.blog_content, 
u.user_id, u.name,
c.comment_id, c.blog_id, c.user_id, c.comment_content ,
uc.name as commentor_name
FROM blogs b LEFT JOIN
users u
ON u.user_id = b.user_id LEFT JOIN
comments c
ON c.blog_id = b.blog_id LEFT JOIN
comments uc
on c.user_id = uc.user_id
WHERE b.blog_id = 2;

在此查询中,所有表都有表别名。这有助于使查询更具可读性。此外,还需要表别名来区分对 users 的两个引用。一份引用资料供博客所有者使用,另一份引用资料供评论作者使用。

关于mysql - sql - 在同一列上连接3个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21603343/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com