ЛЕВАЯ ВНЕШНЕЕ СОЕДИНЕНИЕ (дает дополнительные строки) проблема
У меня есть две таблицы, которые я хочу объединить, используя левое внешнее соединение. Однако, хотя моя левая таблица содержит только уникальные значения, правая таблица удовлетворяет условию более одного раза и, как таковая, добавляет дополнительные строки в набор результатов.
Код для репликации проблемы:
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, хотя левая таблица остается неизменной.
Как строго придерживаться левой таблицы и использовать только правую таблицу, чтобы ДОПОЛНИТЬ строки из левой таблицы?
ПОМОГИТЕ!
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