SQL - 不确定如何连接表

时间:2016-04-06 07:08:47

标签: sql oracle

我试图像这样加入两个表:

表A

ID    Value1
1     A
2     B
3     C

表B

ID    Value2
1     A
3     B
4     C

结果应该是:

ID    Value1  Value2
1     A       A
2     B       null
3     C       B
4     null    C 

即。在ID上将表A连接到表B.如果表A中不存在ID,请添加表B中的ID。

我最接近的是:

SELECT 
    a.ID, a.Value1, b.Value2 
FROM 
    TableA a 
OUTER JOIN 
    TableB b ON a.ID = b.ID

这给了我TableB的新行,但ID为null。

我该如何做到这一点?

3 个答案:

答案 0 :(得分:5)

你非常接近,你需要向正确的方向努力:

SELECT COALESCE(a.ID, B.ID) As ID, a.Value1, b.Value2 
FROM TableA a 
FULL OUTER JOIN TableB b ON a.ID=b.ID

COALESCE函数返回它获得的非空的第一个参数。由于这是一个完整的外连接,a.id在一行上为空,b.id在另一行上为空。

答案 1 :(得分:0)

试试这个:

SELECT *
FROM TableA A
FULL OUTER JOIN TableB B
ON A.ID = B.ID;

请注意:您不应该在SQL中用空格命名表。

答案 2 :(得分:0)

记住加入不同表格的基本知识

SELECT column_name(s)
FROM table1
FULL OUTER JOIN table2
ON table1.column_name=table2.column_name;

对于你的情况:

SELECT a.value1, b.value2 
FROM TableA a 
FULL OUTER JOIN TableB b ON a.ID=b.ID

记住完全外连接

FULL OUTER JOIN关键字返回表(tableA)和表(tableB)中的所有行,FULL OUTER JOIN关键字组合LEFT和RIGHT连接的结果。