Объединение таблиц без общего столбца на сервере SQL - PullRequest
1 голос
/ 08 мая 2019

TABLE1

ID  
----                        
1                           
2                           
3                           
4                           
5      

TABLE2

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

Мне нужно решение для вышеуказанного сценария с использованием JOINS в SQL Server.

Ответы [ 2 ]

5 голосов
/ 08 мая 2019

Используя 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
4 голосов
/ 08 мая 2019

Я не понимаю, почему вы этого хотите, но чтобы получить ожидаемые результаты, вы можете сделать это. Это не соединение, хотя.

SELECT ID, NULL as NAME from Table1
UNION ALL
SELECT NULL, NAME from Table2

Отредактировано, чтобы добавить

Поскольку вопрос специально требует решения с помощью объединения, ответ Арулкумара на FULL OUTER JOIN лучше подходит, и вам не нужно беспокоиться о типах данных столбца.

...