SQL Server中的多列有条件批量更新-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

SQL Server中的多列有条件批量更新

2020-01-03 12:18:35 115 1

我正在尝试更新数十万行,其中两列具有特定值('xxx')。


ID | firstname  | lastname
----------------
1  |  John      | xxx
2  |  xxx       | Scheving
3  |  Agnes     | xxx
4  |  Luke      | Borden
5  |  Kayla     | Borden
6  |  Finnick   | Wayne
7  |  xxx       | xxx

我需要分批进行操作以不完全锁定表。目前,我的查询看起来像这样

SET NOCOUNT ON;
DECLARE @rows INT, @count INT, @message VARCHAR(100);
SET @rows = 1;
SET @count = 0;

WHILE @rows > 0
BEGIN
    BEGIN TRAN
         UPDATE TOP (2000) people
         SET firstname= CASE firstname WHEN 'xxx' THEN 'N/A' ELSE firstname  END,
         lastname= CASE lastname WHEN 'xxx' THEN 'N/A' ELSE lastname END

        SET @rows = @@ROWCOUNT
        SET @count = @count + @rows
        RAISERROR('COUNT %d', 0, 1, @count) WITH NOWAIT
    COMMIT TRAN
END

但是我担心此查询的性能,或者是否比使用案例更容易更新这些列。

SQL
取消 提交回答
全部回答(1)
  • Puppet
    2020-01-03 12:19:02

    我看不到同时更新两个列的价值,所以我建议这样:

    
    update people
        set firstname = 'N/A'
        where firstname = 'XXX';
    
    update people
        set lastname = 'N/A'
        where lastname = 'xxx';
    

    如果要将它们放入循环中,则可以重复以下操作:

    declare @reccnt int;
    set @reccent = 1;
    
    while @reccnt > 0
    begin
        update top (2000) people
            set firstname = 'N/A'
            where firstname = 'XXX';
    
        set @reccnt = @@ROWCOUNT;
    end;
    

    以及姓氏。

    0 0
相关问答

3

回答

请教一个范围查询的问题

小文文文 2019-06-14 14:37:01 115321浏览量 回答数 3

4

回答

Spark 【问答合集】

社区小助手 2019-05-29 14:13:40 127151浏览量 回答数 4

10

回答

【精品问答合集】Hbase热门问答

hbase小能手 2019-05-29 14:37:26 120824浏览量 回答数 10

38

回答

干货分享:DBA专家门诊一期:索引与sql优化问题汇总

xiaofanqie 2014-12-25 15:13:38 92091浏览量 回答数 38

1

回答

通过spark-thriftserver读取hive表执行sql时,tasks 数量怎么设置

游客iwhrjhvjoyqts 2019-07-05 15:30:22 114136浏览量 回答数 1

38

回答

[@饭娱咖啡][¥20]对于慢sql有没有什么比较实用的诊断和处理方法?

江小白太白 2018-10-30 18:47:38 142073浏览量 回答数 38

2

回答

mySQL数据库报错You have an error in your SQL syntax

落地花开啦 2016-02-14 16:09:24 128920浏览量 回答数 2

8

回答

flink sql 支持checkpoints吗?

游客izljdlkgbdwfc 2019-07-10 17:46:37 123985浏览量 回答数 8

9

回答

HaoSQL,好用的SQL等数据库一键包发布!

梦丫头 2017-11-14 15:20:55 71106浏览量 回答数 9

78

回答

【2013.9.5修正版图文】新手如何使用阿里云(linux)服务器建站(搬站)

姑苏公子 2013-04-11 00:39:13 107999浏览量 回答数 78
+关注
0
文章
2173
问答
问答排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载