LEFT JOIN 从左表中获取所有行,无论连接条件如何

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

请记住,现在将返回该NULLTable2.Bid = 3,因为它不满足Table2.IssueId IN ('a','b')条件。