【发布时间】:2017-02-13 15:34:58
【问题描述】:
我有 2 个表变量
- 第一个表有
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 as source,例如:MERGE INTO @t2 using @t1 as source on a=b ...
标签: sql-server merge