【问题标题】:LEFT OUTER JOIN WHEN IT HAS MULTIPLE TABLE SELECT QUERY当它有多个表选择查询时,左外连接
【发布时间】:2016-06-03 03:06:30
【问题描述】:

目前我已经使用内部连接加入了两个表,如下所示

SELECT A.*,B.*
FROM A,B
WHERE A.COLUMN_A = B.COLUMN_B

现在我想加入左外连接到上面的结果,假设我想加入表C

所以我确实喜欢关注

SELECT A.*,B.*
FROM A,B
LEFT OUTER JOIN C ON B.COLUMN_X =  C.COLUMN_X
WHERE A.COLUMN_A = B.COLUMN_B

这在 SQL 导航器中执行没有错误,但是在这个结果中我看不到任何输出。

此查询有什么问题,请指教

【问题讨论】:

    标签: oracle plsql sql-navigator


    【解决方案1】:

    将其更改为具有正确的连接语法,例如

    SELECT A.*,B.*
    FROM A 
    INNER JOIN B ON A.COLUMN_A = B.COLUMN_B
    LEFT OUTER JOIN C ON B.COLUMN_X =  C.COLUMN_X;
    

    最好全部改为外连接

    SELECT A.*,B.*
    FROM A 
    LEFT JOIN B ON A.COLUMN_A = B.COLUMN_B
    LEFT OUTER JOIN C ON B.COLUMN_X =  C.COLUMN_X;
    

    【讨论】:

    • 不需要将inner join改为left join。假设您有一些A.COLUMN_A 值,它们在B.COLUMN_B 中不存在。使用左连接,你会在输出中得到那些A.COLUMN_A,而使用第一个INNER JOIN你不会。
    【解决方案2】:

    使用这个

    SELECT A.*,B.*,C.*
    FROM A
    INNER JOIN B
    ON A.COLUMN_A = B.COLUMN_B
    LEFT OUTER JOIN C 
    ON B.COLUMN_X =  C.COLUMN_X
    

    如果您绝对必须使用旧语法,请使用它。但我不会推荐它。

    SELECT A.*,B.*,C.*
    FROM A,B,C
    where A.COLUMN_A = B.COLUMN_B
    AND
    B.COLUMN_X =  C.COLUMN_X (+)
    

    【讨论】:

      猜你喜欢
      • 2022-12-07
      • 1970-01-01
      • 2015-02-05
      • 1970-01-01
      • 2016-05-04
      • 1970-01-01
      • 2023-03-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多