如果加入false,则加入并显示结果

Dar*_*ney 5 mysql sql

我有一张桌子 - 评论.用户可以发布,如果不是网站的成员,但想要显示他们的详细信息.

因此,如果用户评论谁不是会员我会显示他们的帖子但不链接到他们的个人资料,因为他们没有.

因此,在以下查询中,我想返回行,即使没有连接:

select wc.comment, wc.comment_by_name, wc.user_id, u.url from comments wc
join users u on wc.wag_uid = u.user_id
where id = '1237' group by wc.comment order by wc.dateadded desc
Run Code Online (Sandbox Code Playgroud)

我想回来:

comment    comment_by_name    user_id    url
-------    ---------------    -------    ----
hello      dan                12         /dan
hey        jane                          /jane
world      jack               10         /jack
Run Code Online (Sandbox Code Playgroud)

但上面没有返回jane的数据,因为她没有user_id

即使连接为空,有没有办法返回所有数据?

Joh*_*Woo 8

使用LEFT JOIN替代

SELECT  wc.comment, wc.comment_by_name, wc.user_id, u.url 
FROM    comments wc
        LEFT JOIN users u 
           on wc.wag_uid = u.user_id
WHERE id = '1237' 
GROUP BY wc.comment 
ORDER BY wc.dateadded DESC
Run Code Online (Sandbox Code Playgroud)

基本上INNER JOIN只选择一个表中的记录在另一个表上至少有一个匹配的记录,同时LEFT JOIN左侧表(在您的情况下,它是comments)中选择所有行是否在另一个表上没有匹配.

  • 请参阅此处[SQL连接的可视化表示](http://www.codeproject.com/Articles/33052/Visual-Representation-of-SQL-Joins) (2认同)