在SQL Server中联接没有公共列的表

Pri*_*aaj 1 t-sql sql-server sql-server-2008-r2 sql-server-2012

表格1

ID  
----                        
1                           
2                           
3                           
4                           
5      
Run Code Online (Sandbox Code Playgroud)

表2

Name
----
Z
Y
X
W
V                           
Run Code Online (Sandbox Code Playgroud)

预期产量:

ID              Name
-------------------------
1               NULL
2               NULL
3               NULL
4               NULL
5               NULL
NULL             Z
NULL             Y
NULL             X
NULL             W
NULL             V
Run Code Online (Sandbox Code Playgroud)

我需要通过在SQL Server中使用JOINS来解决上述情况。

Aru*_*mar 5

使用FULL OUTER JOIN,您可以获得预期的结果。

由于没有公共字段,因此,表1中的记录都不应与表2相匹配,反之亦然。因此,也许ON 0 = 1加入条件也将按预期工作。谢谢巴特霍夫兰

因此,以下查询也将起作用:

SELECT T1.Id, T2.[Name]
FROM Table1 T1
FULL OUTER JOIN Table2 T2 ON 0 = 1;
Run Code Online (Sandbox Code Playgroud)

要么

SELECT T1.Id, T2.[Name]
FROM Table1 T1
FULL OUTER JOIN Table2 T2 ON T2.[Name] = CAST(T1.Id AS VARCHAR(2));
Run Code Online (Sandbox Code Playgroud)

演示与示例数据:

DECLARE @Table1 TABLE (Id INT);

INSERT INTO @Table1 (Id) VALUES
(1),                           
(2),                           
(3),                           
(4),                           
(5);  

DECLARE @Table2 TABLE ([Name] VARCHAR(1));

INSERT INTO @Table2 ([Name]) VALUES
('Z'),
('Y'),
('X'),
('W'),
('V');

SELECT T1.Id, T2.[Name]
FROM @Table1 T1
FULL OUTER JOIN @Table2 T2 ON 0 = 1;
Run Code Online (Sandbox Code Playgroud)

输出:

Id      Name
-----------------
1       NULL
2       NULL
3       NULL
4       NULL
5       NULL
NULL    Z
NULL    Y
NULL    X
NULL    W
NULL    V
Run Code Online (Sandbox Code Playgroud)