我可以同时使用正确的外部联接和内部联接吗?

问题描述 投票:0回答:1

我正在尝试从3个表中获取数据,但我认为我需要使用内部联接(以联接TABLE1和TABLE2)和正确的外部联接,因为我需要TABLE3的所有信息,但我不知道该怎么做。我试过了:

select a.TABLE1_ID, e.TABLE2_ID,f.TABLE3_ID
from TABLE1 as a, TABLE2 as e, TABLE3 as f
where a.TABLE1_ID = e.TABLE2_ID and a.TABLE1_ID = f.TABLE3_ID
UNION ALL
SELECT f.TABLE3_ID, NULL
FROM TABLE3 as f
WHERE NOT EXISTS (
    SELECT * FROM TABLE1 as a
    WHERE a.TABLE1_ID = f.TABLE3_ID);

但是我收到以下错误:集合运算符或VALUES子句的操作数没有相同的列数。SQLCODE = -421,SQLSTATE = 42826,DRIVER = 4.19.56

我该怎么办?有可能吗?

sql inner-join
1个回答
0
投票

您正在描述LEFT JOIN

select a.TABLE1_ID, e.TABLE2_ID, f.TABLE3_ID
from TABLE3 f left join
     TABLE1 a
     ON a.TABLE1_ID = f.TABLE3_ID left join
     TABLE2 e 
     on a.TABLE1_ID = e.TABLE2_ID ; 

注意:如果a中有一行与f匹配,但在e中没有匹配的行,则这将保留a中的值。如果使用INNER JOIN,然后使用RIGHT JOIN,则中间表中将没有值。通常需要这样的值。

© www.soinside.com 2019 - 2024. All rights reserved.