我有2张桌子
让我们说表1和表2
它们都有一个共享的值(id)
我正在寻找的是是否有任何功能可以基于该键将它们两者合并,但是如果table2具有更多元素,我希望table1的列为空,并且如果table1具有更多元素,则表2列为空
我尝试了很多不同的联接,但是大多数情况下,由于试图填充双方,所以最终会出现很多重复的值。
尝试了完全外部联接,完全联接等
答案 0 :(得分:1)
您正在寻找full join
:
select t1.*, t2.*
from t1 full join
t2
on t1.id = t2.id;
答案 1 :(得分:0)
以上来自戈登的代码是正确的。但是,由于您尚未指定数据库及其版本,因此我将发布MySQL的备用版本,该版本也适用于其他数据库。
无重复:
SELECT * FROM Table1
LEFT JOIN Table2 ON Table1.id = Table2.id
UNION
SELECT * FROM Table1
RIGHT JOIN Table2 ON Table1.id = Table2.id
有重复项:
SELECT * FROM Table1
LEFT JOIN Table2 ON Table1.id = Table2.id
UNION ALL
SELECT * FROM Table1
RIGHT JOIN Table2 ON Table1.id = Table2.id