Используя FULL OUTER JOIN
, вы можете получить ожидаемый результат.
Поскольку нет общих полей, никакие записи из Таблицы 1 не должны совпадать с Таблицей2 и наоборот.наоборот.Так что, возможно, 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