Pro*_*mid 4 sql oracle join oracle-sqldeveloper
我正在尝试执行左连接,以便从左表中获取所有行,即使这些行的连接条件不成立。
示例:下面的 Aid = Bid 但表 B 只有 3 个 id
我正在使用的查询仅给出连接条件为真的行。即使连接条件不成立,有没有办法从左表中获取所有行?
我的查询:
SELECT Table1.Aid,
Table2.Bid,
Table2.Issueid
FROM Table1
LEFT JOIN Table2 ON Table1.Aid = Table2.Bid;
WHERE Table2.Issueid IN (
'a',
'b'
)
Run Code Online (Sandbox Code Playgroud)
Aar*_*etz 11
将您移至WHERE
您的ON
(连接谓词):
SELECT Table1.Aid, Table2.Bid, Table2.IssueId
FROM Table1 LEFT JOIN Table2
ON Table1.Aid = Table2.Bid
AND Table2.IssueId IN ('a','b');
Run Code Online (Sandbox Code Playgroud)
WHERE
在右侧表格上进行过滤的A实质上使您LEFT JOIN
变成了INNER JOIN
. 它过滤掉行NULL
。
请记住,现在将返回该NULL
行Table2.Bid = 3
,因为它不满足Table2.IssueId IN ('a','b')
条件。