我试图像这样加入两个表:
表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。
我该如何做到这一点?
答案 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连接的结果。