merge集插入,更新,删除于一体,如果要对一个表同时进行插入,更新,删除2个或3三个操作。效率要高于单个操作。
第一种写法:
merge into tableb b --被操作表第二种写法:
using (select * from a) a–参照表 支持子查询
on a.id=b.id–关联关系
when matched --a,b表均匹配到做update
then update set b.nme= b.nme
when not matched–a表有 b表匹配不到做insert (也可以加上 by target)
then insert(id,nme) values(a.id,a.nme)
when not matched by source–a表没有做delete
then delete ;
MERGE INTO Stock AS s两种写法把参照表的条件查询放置的位置不一样
Using ProcurePrepare AS pp
ON (s.warehouse_Id = pp.warehouse_Id and s.goods_Barcode=pp.goods_Barcode)
WHEN MATCHED AND pp.admin_Login='njzp' THEN
UPDATE SET s.s_Num = s.s_Num+pp.pp_Num
WHEN NOT MATCHED BY TARGET AND pp.admin_Login='njzp' THEN
INSERT
VALUES (pp.warehouse_Id, pp.goods_Barcode,pp.pp_Num);
- 本文标题: sqlserver MERGE用法,在查询时根据匹配进行修改,添加和删除数据操作
- 文章分类:【SQLServer】
- 非特殊说明,本文版权归【胡同里的砖头】个人博客 所有,转载请注明出处.