首页 > 数据库 >SqlServer UpSert 实现方式(存在则更新,否则插入)

SqlServer UpSert 实现方式(存在则更新,否则插入)

时间:2022-09-26 10:46:47浏览次数:43  
标签:BEGIN dbo SqlServer Value 插入 value table Id UpSert

方法1:先查询,根据查询结果判断使用insert或者update

IF EXISTS (SELECT 1 FROM table_A WHERE Id = @Id)
    BEGIN
        UPDATE dbo.table_A
        SET Value = @Value
        WHERE Id = @Id;
    END
ELSE
    BEGIN
        INSERT INTO dbo.table_A (Id, Value)
        VALUES(@Id, @Value)
    END
 

方法2:先更新,根据更新结果影响的条目数判断是否需要插入

UPDATE dbo.table_A
SET Value = @Value
WHERE Id = @Id;
    
IF(@@ROWCOUNT = 0)
BEGIN
    INSERT INTO dbo.table_A (Id, Value)
    VALUES(@Id, @Value)
END
 

方法3:使用MERGE语句,将待upsert的数据作为source,merge到目标表 

MERGE INTO table_A as T
USING (SELECT @Id AS id, @Value AS value ) AS S
ON T.Id = S.id
WHEN MATCHED THEN
    UPDATE SET T.Value = S.value
WHEN NOT MATCHED THEN
    INSERT(Id, Value) VALUES(S.id, S.value);

 

标签:BEGIN,dbo,SqlServer,Value,插入,value,table,Id,UpSert
From: https://www.cnblogs.com/wzf-Learning/p/16730047.html

相关文章

  • 面试官:1亿条数据批量插入 MySQL,哪种方式最快?
    这几天研究mysql优化中查询效率时,发现测试的数据太少(10万级别),利用EXPLAIN比较不同的SQL语句,不能够得到比较有效的测评数据,大多模棱两可,不敢通过这些数据下定论。所......
  • 平衡二叉树(AVL)的插入和删除
    在计算机科学中,AVL树是最先发明的自平衡二叉查找树。在AVL树中任何节点的两个子树的高度最大差别为1,所以它也被称为高度平衡树。查找、插入和删除在平均和最坏情况下都是......
  • 离线维护 支持插入数 的序列
    论离线维护插入单点碰到过好多类似的题,都在维护这个序列中卡住了,这是个简单易懂\(O(nlog^2_2n)\)我们考虑从后往前维护序列对于第n个插入的数,它最后所在的位置p就是预......
  • vector大小、数据存取、插入删除操作
    #include<iostream>#include<vector>usingnamespacestd;/*size();//返回容器中元素的个数empty();//判断容器是否为空resize(intnum);//重新指定容器的长度为......
  • 插入排序
    简介插入式排序属于内部排序法,是对于欲排序的元素以插入的方式找寻该元素的适当位置,以达到排序的目的插入排序(InsertionSorting)的基本思想是:把n个待排序的元素看成为......
  • python向excel中插入折线图
    importopenpyxlfromopenpyxl.chartimportLineChart,Referenceworkbook=openpyxl.load_workbook('file/data.xlsx')sheet=workbook['薪水']#创建折线图的......
  • Python 使用psycopg2批量插入PG库
    importpsycopg2conn=psycopg2.connect(database="sdp",user="kiki",password="123",host="",port="5432")cursor=conn.cursor()stas_sql="select*fromtable......
  • sqlserver 表的空间收缩 执行记录
    收缩sqlserver表的空间:一个47亿条记录的表删除了,需要收缩一下磁盘空间,不够是删除打表里的部分数据还是整个表的数据,都需要执行收缩命名才能释放存储空间 执行命名:EXE......
  • 【SQLServer】SQLServer执行计划的类型
    1.【SQLServer】SQLServer执行计划概览 在上一篇文章中,我们详细描述了提交的SQLServer查询所经历的不同阶段以及SQLServer关系引擎如何处理它。SQLServer关系引擎生......
  • 【SQLServer 】SQLServer健康报告
    使用:1.创建存储过程:usp_SQLhealthcheck_report2.执行存储过程executeusp_SQLhealthcheck_report3.输入mail地址(可选项)4.保存结果输出格式:HTML(支持将html以邮件附件的......