目前我可以搜索两个表(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
表结合使用得到名字和姓氏?
有两个单独的查询是否更可靠?
答案 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_name
和user_last_name
将添加到该行,但是,如果event_user_id
是NULL
,那么第一个NULL
姓氏也将是{{1}}。正是我想要的。