У меня есть 2 таблицы переменныхSQL Merge query - дубликаты?
- Первая таблица имеет
1, 3, 5
- Вторую таблицу имеет
2, 4, 5
Однако, когда я запускаю следующий запрос:
DECLARE @t1 TABLE (a int)
DECLARE @t2 TABLE (b int)
INSERT INTO @t1 (a) VALUES (1),(3),(5)
INSERT INTO @t2 (b) VALUES (2),(4),(5)
;WITH Source AS (
SELECT * from @t1
)
MERGE INTO @t2
USING Source ON 1 = 0
WHEN NOT MATCHED THEN
INSERT (b) VALUES (a);
SELECT * FROM @t2
я неполносимметричный объединенные результаты:
Вместо того, чтобы 2, 4, 5, 1, 3
, я получаю 2, 4, 5, 1, 3, 5
Вопрос
Почему я вижу двойную 5
? Это запрос слияния, а 5 совпадает с другим 5 во второй таблице.
'1 = 0'? Это всегда ложно. Вам также не нужен CTE, вы можете написать 'USING @ t2 как источник', например:' MERGE INTO @ t2, используя @ t1 в качестве источника на a = b ... ' –