merge_0">merge语法
用满足条件的查询结果集更新满足条件的表的内容,如果匹配上则更新,没有匹配上则插入。
具体语法如下:
Merge Into table1 a
Using (Select col1, col2, col3 From table2 Where b.col4 = value4) b
On (a.col1 = b.col1)
When Matched Then
Update Set a.col2 = b.col2, a.col3 = b.col3
When Not Matched Then
Insert
(a.col1, a.col2, a.col3)
Values
(b.col1, b.col2, b.col3) Where a.col4 = value4;
关键字
-
Merge Into
指定要更新的表并指定别名,必需。 -
Using
指定满足条件的结果集,必需。
结果集用‘()’包裹并指定别名 -
On
指定比对的依据,必需。
依据用‘()’包裹。 -
When Matched Then
指定满足On条件的操作,可选。
跟Update Set配对使用。 -
Update Set
跟 When Matched Then配对使用,负责更新表内容。
不能指定更新On条件包含的内容。 -
When Not Matched Then
指定不满足On条件的操作,可选。
跟Insert Values配对使用。 -
Insert Values
跟 When Not Matched Then配对使用,负责插入表内容。
可以指定更新表的内容。 -
Where
指定更新表的内容
,可选。
注意事项
- on
- 尽量不要使用限制条件
- 有限制条件写在查询语句里或者在语句最后写where子句
- update set
- 不要包含on匹配列
- When Matched Then 或者 When Not Matched Then
- 必须二选一,否则merge语句就失去意义。