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

时间:2012-11-24 07:05:23

标签: 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

我想回来:

comment    comment_by_name    user_id    url
-------    ---------------    -------    ----
hello      dan                12         /dan
hey        jane                          /jane
world      jack               10         /jack

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

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

1 个答案:

答案 0 :(得分: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

基本上INNER JOIN只选择一个表中的记录与另一个表上至少一个匹配的记录,而LEFT JOIN选择左侧表中的所有行(< em>在你的情况下,它是comments )是否在另一个表上没有匹配。