【发布时间】:2020-08-25 08:18:50
【问题描述】:
我有一个表作为表 1
BankId |CompanyId|
23 | 2 |
24 | 2 |
31 | 2 |
NULL | 2 |
83 | 1 |
| 2 |
| 2 |
29 | 7 |
我有一个表作为表 2
BankId |CompanyId|AccountId|
23 | 2 | 21
24 | 4 | 22
31 | 2 | 23
45 | 2 | 24
83 | 1 |
12 | 2 | 20
43 | 2 | 2
29 | 7 |
现在bankid 和company id 在这两个表中很常见。现在我想根据公司 id 从第一个表中获取所有记录并应用左连接。但问题是,如果我应用左连接,那么它会跳过第一个 bankid 为空的表中的条目。
请告诉我左连接查询应该是什么?
Sql查询
select table1.*,table2.AccountId
from table1
LEFT JOIN table2
ON table1.Bankld=table2.BankId
WHERE table1.CompanyId=table2.CompanyId
AND table1.CompanyId=2;
【问题讨论】:
-
不,Left Join 不会跳过行,除非你有像
table1.bankid >40这样的 WHERE 条件来过滤连接的结果。应该改为与 ON。 -
请显示您的查询和所需的结果。
-
该行被跳过,因为您加入
BankId(这意味着table2列将是null对于具有nullBankId的行,然后您检查(在WHERE) 如果table1.CompanyId=table2.CompanyId基本上检查2 = null是否为所述行。编辑:这是fiddle,第二个请求显示“原始”LEFT JOIN列 -
显示提供的源数据所需的输出。