如果null不存在,如何选择两个表并将它们组合在一起

时间:2016-06-24 15:53:26

标签: mysql

目前我可以搜索两个表(events表和users表)并使用以下内容将它们组合在一起:

SELECT e.*, u.user_first_name, u.user_last_name
FROM users u, events e
WHERE e.event_user_id = u.user_id
ORDER BY e.event_id DESC

这将允许我搜索事件表中的所有内容以及users表中的名字和姓氏。

但问题发生在event_user_id可以是NULL时,意味着如果有用户设置,我想要包含他们的名字和姓氏,但如果没有,那么我只是希望该字段为空白。

SELECT e.*, u.user_first_name, u.user_last_name
FROM users u, events e
WHERE e.event_user_id = u.user_id
OR e.event_user_id IS NULL
ORDER BY e.event_id DESC

我知道上面的例子并不正确。 我的问题是,如何选择两个表,其中主表具有可选event_user_id,如果它不是NULL,则与users表结合使用得到名字和姓氏?

有两个单独的查询是否更可靠?

1 个答案:

答案 0 :(得分:0)

正如Ivan在我的问题评论中提到的,成功执行我想要的查询的正确方法是使用left join,所以我做了一些研究,我找到了正确的查询:

SELECT events.*, users.user_first_name, users.user_last_name
FROM events
LEFT OUTER JOIN users
ON events.event_user_id = users.user_id;

如果存在event_user_id,那么user_first_nameuser_last_name将添加到该行,但是,如果event_user_idNULL,那么第一个NULL姓氏也将是{{1}}。正是我想要的。