c# - 在单个查询中更新表中的多个值

标签 c# sql-server

我有一张表,上面写着“Table1”,如下所示

  Table1
  ---------------
  Name  | Value
  ----------------
  name1 | val1

  name2 | val2

  name3 | val3

  name4 | val4

这里我需要根据“名称”更新“值”字段

我使用下面的存储过程来执行此操作,

CREATE PROCEDURE [dbo].[UpdateDetails] 
(
    @name1 NVARCHAR(MAX) = NULL,
    @name2 NVARCHAR(MAX) = NULL,
    @name3 NVARCHAR(MAX) = NULL,
    @name4 NVARCHAR(MAX) = NULL,
)
AS
BEGIN
    UPDATE Table1 SET Value = @name1 WHERE Name = 'name1';
    UPDATE Table1 SET Value = @name2 WHERE Name = 'name2';
    UPDATE Table1 SET Value = @name3 WHERE Name = 'name3';
    UPDATE Table1 SET Value = @name4 WHERE Name = 'name4';
END

更新此表的最佳方式是什么?

最佳答案

试试这个代码:

UPDATE Table1 
SET Value = CASE Name WHEN 'name1' THEN @name1
                      WHEN 'name2' THEN @name2
                      WHEN 'name3' THEN @name3
                      WHEN 'name4' THEN @name4                    
            END
WHERE Name in ('name1', 'name2', 'name3', 'name4');

关于c# - 在单个查询中更新表中的多个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38100639/

相关文章:

javascript - mvc 5 中图像未成功上传

c# - 缺少带有主调度程序的模块。添加提供主要调度程序的依赖项,例如 'kotlinx-coroutines-android'

c# - 匹配任何有效正则表达式的正则表达式

c# - 如何在 C# 中获取屏幕上文本的边界框?

c# - 为 appsettings.json 编写自定义转换器

c# - 如何将项目添加到静态属性类型列表?

sql-server - 将数据从一个 MS SQL Server 复制/克隆到另一个

java - ubuntu环境下Java连接MS SQL数据库

sql-server - SQL Server中一个非常奇怪的key lock死锁

sql-server - 我需要在查询中加入行(透视)