Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 更新多行(最多100行)的所有列(最多30行)中的值_Sql_Sql Server_Tsql - Fatal编程技术网

Sql 更新多行(最多100行)的所有列(最多30行)中的值

Sql 更新多行(最多100行)的所有列(最多30行)中的值,sql,sql-server,tsql,Sql,Sql Server,Tsql,我有一张桌子 我需要根据someTable中的id更新多行中的所有值(比如70行)。关于应该更新的行的信息应该从excel文件中获取。那么我应该如何更新这些值呢?这是唯一的方法吗(对所有行重复相同的代码) 您可能会发现使用值来表示这一点很方便: UPDATE someTable SET col1 = newVal - 1, col2 = newVal - 2, ... col30 = newVal30 - 30 FROM Some

我有一张桌子

我需要根据
someTable
中的
id
更新多行中的所有值(比如70行)。关于应该更新的行的信息应该从
excel文件中获取。那么我应该如何更新这些值呢?这是唯一的方法吗(对所有行重复相同的代码)


您可能会发现使用
值来表示这一点很方便:

UPDATE someTable
    SET col1 = newVal - 1,
        col2 = newVal - 2,
        ...
        col30 = newVal30 - 30
    FROM SomeTable st JOIN
         (VALUES (1, newVal1),
                 (2, newVal2),
                 . . .
         ) v(id, newVal)
         ON st.id = v.id;
也就是说,只需一次更新即可完成此操作


注意:这看起来相当可疑,因为这是一个
更新过程。我认为另一个表结构更合适,每个
id
col
(即每个
id
有30行)。

是的,这是唯一的方法。这不是很规范化,一个表中有30个相同的列。它们应该被取消插入行请不要将imaged用于数据。。。使用格式化文本。新值来自何处?这些值是硬编码的,来自其他表还是Excel文件?第一次更新的代码与图像不一致。@Stu数据库中已有一个表。有1000-s行。我需要用excel文件中的新值(课程id除外)更新其中的一些行。若有30多行要更新呢?100甚至更多?@JunDev你已经知道这个问题的答案了,因为它与你之前的问题是同一个问题。
UPDATE someTable
    SET col1 = newVal - 1,
        col2 = newVal - 2,
        ...
        col30 = newVal30 - 30
    FROM SomeTable st JOIN
         (VALUES (1, newVal1),
                 (2, newVal2),
                 . . .
         ) v(id, newVal)
         ON st.id = v.id;