如何理解T-SQL中Merge语句

2025-03-11 03:14:12
推荐回答(1个)
回答1:

执行如下SQL语句:

1
2
3
4
5
6
7
8
9
10
11

MERGE INTO Student_Target AS st   --这里是目标表,它将要被源表Merge
USING Student_Source AS ss     --这里是源表
ON st.Sno = ss.Sno          --这里是匹配条件
WHEN MATCHED           --When和Then是配套的,当st.sno=ss.sno时,用ss.sname更新st.sname,我们看到这里update后面没有写明更新的表,这里更新的是目标表
THEN UPDATE SET st.Sname = ss.Sname
WHEN NOT MATCHED BY TARGET  --目标表中不存在,而源表中存在数据,那么就执行insert操作,这里by target可以省略,但是建议加上
THEN INSERT VALUES ( ss.Sno,ss.Sname)
WHEN NOT MATCHED BY SOURCE --当目标表中存在,而源表中不存在数据,那么就执行delete操作,这里使用了by source
THEN DELETE