使用merge关键字对数据进行 insert 或update操作
2011-06-23 13:45
465 查看
使用 merge 对数据进行 插入或 修改的操作
MERGE 语句最多可以有两个 WHEN MATCHED 子句。如果指定了两个子句,则第一个子句必须同时带有一个 AND
<search_condition> 子句。对于任何给定的行,只有在未应用第一个 WHEN MATCHED
子句的情况下,才会应用第二个 WHEN MATCHED 子句。如果有两个 WHEN MATCHED 子句,那么其中的一个必须指定 UPDATE
操作,而另一个必须指定 DELETE 操作。如果在 <merge_matched> 子句中指定了 UPDATE,并且根据
<merge_search_condition>,<table_source> 中的多个行与 target_table 中的某一行匹配,则 SQL Server 将返回错误。MERGE 语句无法多次更新同一行,也无法更新和删除同一行。
指定对于 <table_source> ON <merge_search_condition> 返回的每一行,如果该行与 target_table 中的行不匹配但是满足其他搜索条件(如果存在),则在 target_table 中插入一行。要插入的值是由 <merge_not_matched> 子句指定的。MERGE 语句只能有一个 WHEN NOT MATCHED 子句。
MERGE 语句最多可以有两个 WHEN NOT MATCHED BY SOURCE
子句。如果指定了两个子句,则第一个子句必须同时带有一个 AND <clause_search_condition>
子句。对于任何给定的行,只有当未应用第一个 WHEN NOT MATCHED BY SOURCE 子句时才会应用第二个子句。如果有两个 WHEN
NOT MATCHED BY SOURCE 子句,那么其中的一个必须指定 UPDATE 操作,而另一个必须指定 DELETE 操作。在
<clause_search_condition> 中只能引用目标表中的列。
CREATE procedure InsertUnitMeasure @a nvarchar(100),@b nvarchar(100) as begin set nocount on merge temp as target --数据目标源 temp是表 using (select @a,@b) as source (a,b) -- 数据源 on (target.a=source.a) --比较的字段 when matched then update set b=source.b --如果符合 就更新 b字段 when not matched then insert(a,b)values(source.a,b); --如果不符合就插入 --output deleted.*,$action,inserted.* into MyTempTable; --此句 中的 $action没法理解 只能想当于执行的类型 end
MERGE 语句最多可以有两个 WHEN MATCHED 子句。如果指定了两个子句,则第一个子句必须同时带有一个 AND
<search_condition> 子句。对于任何给定的行,只有在未应用第一个 WHEN MATCHED
子句的情况下,才会应用第二个 WHEN MATCHED 子句。如果有两个 WHEN MATCHED 子句,那么其中的一个必须指定 UPDATE
操作,而另一个必须指定 DELETE 操作。如果在 <merge_matched> 子句中指定了 UPDATE,并且根据
<merge_search_condition>,<table_source> 中的多个行与 target_table 中的某一行匹配,则 SQL Server 将返回错误。MERGE 语句无法多次更新同一行,也无法更新和删除同一行。
指定对于 <table_source> ON <merge_search_condition> 返回的每一行,如果该行与 target_table 中的行不匹配但是满足其他搜索条件(如果存在),则在 target_table 中插入一行。要插入的值是由 <merge_not_matched> 子句指定的。MERGE 语句只能有一个 WHEN NOT MATCHED 子句。
MERGE 语句最多可以有两个 WHEN NOT MATCHED BY SOURCE
子句。如果指定了两个子句,则第一个子句必须同时带有一个 AND <clause_search_condition>
子句。对于任何给定的行,只有当未应用第一个 WHEN NOT MATCHED BY SOURCE 子句时才会应用第二个子句。如果有两个 WHEN
NOT MATCHED BY SOURCE 子句,那么其中的一个必须指定 UPDATE 操作,而另一个必须指定 DELETE 操作。在
<clause_search_condition> 中只能引用目标表中的列。
相关文章推荐
- 在SQL Server中使用merge同时进行Insert,Update和Delete操作
- SQL 游标使用的小例子,对于每行数据根据参数的不同进行Insert或Update操作.
- Merge(在一条语句中使用Insert,Update,Delete) 对两个表进行同步数据
- MERGE语句用来合并UPDATE和INSERT语句,一张表的大数据操作,要同时进行增删改,提高性能
- C#使用Tableadapter进行update,Insert的操作
- SQL之merge into 批量更新数据 sql数据同步 基于源表对目标表做Insert,Update,Delete操作
- 在oracle数据库中,无法对数据表进行insert和update操作
- Command不是也可以对数据库进行insert,update,delete操作吗,为什么还需要DataAdapter。我知道DataAdapter可以用来想AataSet中填充数据,Command不可以吗?
- SQL之merge into 批量更新数据 Merge关键字是一个神奇的DML关键字。它在SQL Server 2008被引入,它能将Insert,Update,Delete简单的并为一句。M
- 使用react/lib/update 对数据进行操作
- SQL Server 使用 Merge 关键字进行表数据同步
- 使用merge同时执行insert和update操作
- SQL Server中的XML数据进行insert、update、delete操作实现代码
- 使用二项队列来完成insert操作,不要调用merge
- Android 使用VCard数据类型 异步进行联系人备份与恢复操作
- 菜鸟教程之工具使用(九)——Git如何进行分支的merge操作
- 使用SQL 2008进行INSERT操作
- 使用mysqldump对MySQL的数据进行备份的操作教程
- Spring中使用getSession()与通过HibernateTemplate进行数据操作的差别
- sql server操作,使用insert进行批量数据操作