Ale*_*rff 7 sql t-sql sql-server
我正在使用MS SQL.
我有以下表格:
table A:
id1 data1
8234 ko
2 po
333 koo
40 woo
table B:
id2 data2
123 meow
654 frrr
table C:
id3 data3
10 a
20 b
30 c
40 d
50 e
60 f
Run Code Online (Sandbox Code Playgroud)
我想得到这个:
id1 data1 id2 data2 id3 data3
8234 ko 123 meow 10 a
2 po 654 frrr 20 b
333 koo NULL NULL 30 c
40 woo NULL NULL 40 d
NULL NULL NULL NULL 50 e
NULL NULL NULL NULL 60 f
Run Code Online (Sandbox Code Playgroud)
这似乎是没有任何条件的全部表格.我只想按原样获取所有表中的所有列和所有数据.
我怎样才能做到这一点?UPD:表格不相关.
如果表是相关的:当事先知道哪个表大于表时,我会使用LEFT或RIGHT JOIN.但它不得而知.
创建一个索引row_number,用于完整连接
select * from (
select
row_number() over (order by id1 asc) rn,
id1, data1
from ta
) t1
full join (
select
row_number() over (order by id2 asc) rn,
id2, data2
from tb
) t2 on t1.rn = t2.rn
full join (
select
row_number() over (order by id3 asc) rn,
id3, data3
from tc
) t3 on t1.rn = t3.rn
Run Code Online (Sandbox Code Playgroud)
小智 5
尝试这样的事情:
SELECT *
FROM A
FULL OUTER JOIN B ON 1 = 1
FULL OUTER JOIN C ON 1 = 1
Run Code Online (Sandbox Code Playgroud)