如何在没有公共列的情况下使用SQL连接两个表

Yas*_*sin 5 sql-server

例:

表格1:

Column1           Column2
-----------       -------------
A                 1
B                 2
D                 3
E                 4
Run Code Online (Sandbox Code Playgroud)

表2:

Column3           Column4
-----------       -------------
A                 7
E                 9
Z                 5
Run Code Online (Sandbox Code Playgroud)

预期产量:

Column1           Column2             Column3            Column4
-----------       -------------       -------------      -------------
A                 1                   A                  7
B                 2                   E                  9
D                 3                   Z                  5
E                 4                   NULL               NULL
Run Code Online (Sandbox Code Playgroud)

我想要如图所示的输出。

如果有两个表的列分别为Column1,Coumn2和Column3,Column4,则预期输出应为不带任何联接的Column1,Column2,Column3,Column4。它应该只是Table2在Table1的右侧。如果行数不匹配,则Null值将占用空间。

Gio*_*sos 6

您可以使用ROW_NUMBER窗口函数创建一个计算字段,该字段可用于将两个表连接在一起:

SELECT t1.Column1, t1.Column2, t2.Column3, t2.Column4
FROM (
   SELECT Column1, Column2,
          ROW_NUMBER() OVER (ORDER BY Column1) AS rn
   FROM Table1) AS t1
FULL OUTER JOIN  (
   SELECT Column3, Column4,
          ROW_NUMBER() OVER (ORDER BY Column3) AS rn
   FROM Table2) AS t2
ON t1.rn = t2.rn
Run Code Online (Sandbox Code Playgroud)

如果FULL OUTER JOIN有一个Table1或Table2更多行,则必须使用A。