在 sql 服务器中连接没有公共列的表
Joining tables without a common column in sql server
表 1
ID
----
1
2
3
4
5
表 2
Name
----
Z
Y
X
W
V
预期输出:
ID Name
-------------------------
1 NULL
2 NULL
3 NULL
4 NULL
5 NULL
NULL Z
NULL Y
NULL X
NULL W
NULL V
我需要通过在 SQL 服务器中使用 JOINS 来解决上述情况。
我不明白你为什么想要这个,但要获得预期的结果,你可以这样做。不过,这不是联接。
SELECT ID, NULL as NAME from Table1
UNION ALL
SELECT NULL, NAME from Table2
编辑添加
由于问题特别要求使用连接的解决方案,因此 Arulkumar 的 FULL OUTER JOIN 答案更合适,您不必担心列数据类型是什么。
使用FULL OUTER JOIN
,可以得到预期的结果。
由于没有公共字段,Table1 中的记录不应与 Table2 匹配,反之亦然。所以也许 ON 0 = 1
作为连接条件也将按预期工作。
所以下面的查询也可以工作:
SELECT T1.Id, T2.[Name]
FROM Table1 T1
FULL OUTER JOIN Table2 T2 ON 0 = 1;
或
SELECT T1.Id, T2.[Name]
FROM Table1 T1
FULL OUTER JOIN Table2 T2 ON T2.[Name] = CAST(T1.Id AS VARCHAR(2));
示例数据演示:
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;
输出:
Id Name
-----------------
1 NULL
2 NULL
3 NULL
4 NULL
5 NULL
NULL Z
NULL Y
NULL X
NULL W
NULL V
表 1
ID
----
1
2
3
4
5
表 2
Name
----
Z
Y
X
W
V
预期输出:
ID Name
-------------------------
1 NULL
2 NULL
3 NULL
4 NULL
5 NULL
NULL Z
NULL Y
NULL X
NULL W
NULL V
我需要通过在 SQL 服务器中使用 JOINS 来解决上述情况。
我不明白你为什么想要这个,但要获得预期的结果,你可以这样做。不过,这不是联接。
SELECT ID, NULL as NAME from Table1
UNION ALL
SELECT NULL, NAME from Table2
编辑添加
由于问题特别要求使用连接的解决方案,因此 Arulkumar 的 FULL OUTER JOIN 答案更合适,您不必担心列数据类型是什么。
使用FULL OUTER JOIN
,可以得到预期的结果。
由于没有公共字段,Table1 中的记录不应与 Table2 匹配,反之亦然。所以也许 ON 0 = 1
作为连接条件也将按预期工作。
所以下面的查询也可以工作:
SELECT T1.Id, T2.[Name]
FROM Table1 T1
FULL OUTER JOIN Table2 T2 ON 0 = 1;
或
SELECT T1.Id, T2.[Name]
FROM Table1 T1
FULL OUTER JOIN Table2 T2 ON T2.[Name] = CAST(T1.Id AS VARCHAR(2));
示例数据演示:
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;
输出:
Id Name
-----------------
1 NULL
2 NULL
3 NULL
4 NULL
5 NULL
NULL Z
NULL Y
NULL X
NULL W
NULL V