我需要运行类似于左/右外部联接的查询。换句话说,我需要左表和右表中的所有行。但是我不需要笛卡尔积(交叉联接)。就我而言,我需要匹配电子邮件地址。因此,鉴于此,我必须输出左表中的所有行,在电子邮件地址上加入右表,但所有与左表或右表都不匹配的行也需要输出,并且对面的桌子。如果存在这种情况,则有点像 = 联接,或者是左向右外部联接。
至于我尝试过的:Google搜索。但是什么也没找到。交叉应用可能有效,但我无法绕开与连接有何不同之处。
理论左右连接示例:
select users.*, contacts.*
from users
left-right join contacts on users.emailAddress = contacts.emailAddress
因此,如果用户包含:
---------------------------------- |emailAddress | firstName | ---------------------------------- |k@company.com | ken | |b@enterprise.com | bill | |j@establishment.com | joe | ----------------------------------
联系人包含:
-------------------------------- |emailAddress | optedOut | -------------------------------- |z@bigcompany.com | 0 | |b@enterprise.com | 1 | |h@smallcompany.com | 1 | --------------------------------
输出应如下所示:
------------------------------------------------------------------ |emailAddress | firstName |emailAddress | optedOut | ------------------------------------------------------------------ |k@company.com | ken | NULL | NULL | |b@enterprise.com | bill | b@enterprise.com | 1 | |j@establishment.com | joe | NULL | NULL | |NULL | NULL | z@bigcompany.com | 0 | |NULL | NULL | h@smallcompany.com | 1 | ------------------------------------------------------------------
答案 0 :(得分:2)
这称为“完全外部联接”。您的查询应类似于:
select users.*, contacts.*
from users
full outer join contacts on users.emailAddress = contacts.emailAddress