У меня есть две таблицы, которые я хочу объединить, используя левое внешнее соединение. Однако, хотя моя левая таблица содержит только уникальные значения, правая таблица удовлетворяет условию более одного раза и, как таковая, добавляет дополнительные строки в набор результатов.
Код для решения проблемы:
declare @tb1 table (c1 int)
declare @tb2 table (c2 int)
INSERT INTO @tb1 VALUES (1)
INSERT INTO @tb1 VALUES (2)
INSERT INTO @tb1 VALUES (3)
INSERT INTO @tb1 VALUES (4)
INSERT INTO @tb2 VALUES (3)
INSERT INTO @tb2 VALUES (4)
INSERT INTO @tb2 VALUES (5)
INSERT INTO @tb2 VALUES (6)
select * from @tb1 left outer join @tb2 ON c1 = c2
INSERT INTO @tb2 VALUES (3)
INSERT INTO @tb2 VALUES (4)
INSERT INTO @tb2 VALUES (5)
INSERT INTO @tb2 VALUES (6)
select * from @tb1 left outer join @tb2 ON c1 = c2
Как видите, первый SELECT возвращает 4 строки, где второй SELECT 6, хотя левая таблица остается неизменной.
Как строго придерживаться левой таблицы и использовать только правую таблицу, чтобы ДОПОЛНИТЬ строки из левой таблицы?
HELP!
RESULTS:
c1 c2
----------- -----------
1 NULL
2 NULL
3 3
4 4
[DUPLICATE @tb2 records]
c1 c2
----------- -----------
1 NULL
2 NULL
3 3
3 3
4 4
4 4