*=* 加入?有这样的事吗?
*=* join? Is there such a thing?
我需要 运行 类似于 left/right 外连接的查询。换句话说,我需要左侧和右侧 table 的所有行。但我不需要笛卡尔积(交叉连接)。在我的例子中,我需要匹配电子邮件地址。因此,鉴于此,我必须从左侧 table 输出所有行,并在电子邮件地址上加入右侧 table,但是所有与左侧或右侧 table 都不匹配的行需要与来自相反 table 的字段的空值一起输出。有点像 = 连接(如果有的话),或者左-右外连接。
至于我试过的方法: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 |
------------------------------------------------------------------
它被称为"full outer join"。您的查询应如下所示:
select users.*, contacts.*
from users
full outer join contacts on users.emailAddress = contacts.emailAddress
我需要 运行 类似于 left/right 外连接的查询。换句话说,我需要左侧和右侧 table 的所有行。但我不需要笛卡尔积(交叉连接)。在我的例子中,我需要匹配电子邮件地址。因此,鉴于此,我必须从左侧 table 输出所有行,并在电子邮件地址上加入右侧 table,但是所有与左侧或右侧 table 都不匹配的行需要与来自相反 table 的字段的空值一起输出。有点像 = 连接(如果有的话),或者左-右外连接。
至于我试过的方法: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 | ------------------------------------------------------------------
它被称为"full outer join"。您的查询应如下所示:
select users.*, contacts.*
from users
full outer join contacts on users.emailAddress = contacts.emailAddress