首页 > 解决方案 > 为什么 Oracle Left Join 在应该有值的地方返回 null

问题描述

我有这个使用左连接 3 个表的查询。但结果为 null 。

t1

col1 col2
AA 000011
AA 000012
AA 000013
BB 000023

t2

col1 col2
01 AA
01 AA2
01 AA3
02 BB
SELECT PMF.Col1,PMF.Col2 
FROM (SELECT DISTINCT(col1)
             FROM T1) TAS
    LEFT JOIN T2 PMF
        ON (TAS.col1 = PMF.col2)
    LEFT JOIN t3 BU
        ON (PMF.col1= BU.col1)

但是如果我运行查询,结果的数量是正确的,但值都是空的。结果

col1 col2
无效的 无效的
无效的 无效的

预期结果应该是

col1 col2
01 AA
02 BB

行数正确但值为空 ActualResult

标签: sqloracle

解决方案


查看预期结果,您似乎需要从中获取数据,t2因此您可以使用以下查询:

SELECT distinct PMF.Col1,PMF.Col2 
FROM T1 TAS
    JOIN T2 PMF
        ON (TAS.col1 = PMF.col2)
    LEFT JOIN t3 BU
        ON (PMF.col1= BU.col1)

推荐阅读