更新SQL中的多个列

有没有办法使用插入语句相同的方式更新SQL Server中的多个列?

就像是:

Update table1 set (a,b,c,d,e,f,g,h,i,j,k)= (t2.a,t2.b,t2.c,t2.d,t2.e,t2.f,t2.g,t2.h,t2.i,t2.j,t2.k) from table2 t2 where table1.id=table2.id 

或者类似的东西,而不是像这样:

 update table set a=t2.a,b=t2.b etc 

如果你有100列以上的话,这可能会让你觉得很累。

“令人讨厌的方式”是标准的SQL,以及主stream的RDBMS如何做到这一点。

有100多列,你可能有一个devise问题…也有减轻客户端工具(例如生成UPDATE语句)的方法或通过使用ORMs

尝试这个:

 UPDATE table1 SET a = t2.a, b = t2.b, ....... FROM table2 t2 WHERE table1.id = t2.id 

这应该适用于任何SQL方言…..

是的 – 这是很多打字 – 这是SQL这样做的方式。

Update table1 set (a,b,c) = (select x,y,x)语法是使用行值构造函数的一个例子, Oracle支持这个 ,MSSQL不支持 。 ( 连接项目 )

您的查询几乎是正确的。 这个T-SQL是:

 UPDATE Table1 SET Field1 = Table2.Field1, Field2 = Table2.Field2, other columns... FROM Table2 WHERE Table1.ID = Table2.ID 
  UPDATE t1 SET t1.a = t2.a, t1.b = t2.b, . . . FROM table1 t1 INNER JOIN table2 t2 ON t1.id=t2.id 

你可以试试这个

句法

 UPDATE table-name SET column-name = value, column-name = value, ... WHERE condition 

 UPDATE school SET course = 'mysqli', teacher = 'Tanzania', student = 'you' WHERE id = 6 

这是一个工作:

 UPDATE `table_1` INNER JOIN `table_2` SET col1= value, col2= val,col3= val,col4= val; 

值是table_2中的列

如果你需要重复input几次,你可以像我一样做。 在excel表格中将行列名称写入行(在每列名称(=)的末尾记下,这在记事本++中很容易),在列表右侧创build一个列来复制和粘贴对应于新条目的值每列。 然后在他们的右边,在一个独立的专栏中填入逗号

然后你将不得不复制你的值到中间列每次然后只需粘贴然后运行

我不知道更简单的解决scheme

我试过这种方式,它的工作正常:

 UPDATE Sub2 SET SLNNOND = Sub.SLNNOND, Sub2.SLNNONF = Sub.SLNNONF FROM #TEMP Sub2 

我在MySql中做了这个,它更新了单个logging中的多个列,所以如果你使用MySql作为你的服务器,请试试这个:

 "UPDATE creditor_tb SET credit_amount='" & CDbl(cur_amount) & "' , totalamount_to_pay='" & current_total & "', WHERE credit_id='" & lbcreditId.Text & "'". 

不过,我在使用MySql服务器的vb.net中进行编码,但只要使用MySql作为您的服务器,就可以将其用于您最喜欢的编程语言。

 UPDATE table_name SET column1=value1,column2=value2,... WHERE some_column=some_value; 

http://www.w3schools.com/sql/sql_update.asp

 update T1 set T1.COST2=T1.TOT_COST+2.000, T1.COST3=T1.TOT_COST+2.000, T1.COST4=T1.TOT_COST+2.000, T1.COST5=T1.TOT_COST+2.000, T1.COST6=T1.TOT_COST+2.000, T1.COST7=T1.TOT_COST+2.000, T1.COST8=T1.TOT_COST+2.000, T1.COST9=T1.TOT_COST+2.000, T1.COST10=T1.TOT_COST+2.000, T1.COST11=T1.TOT_COST+2.000, T1.COST12=T1.TOT_COST+2.000, T1.COST13=T1.TOT_COST+2.000 from DBRMAST T1 inner join DBRMAST t2 on t2.CODE=T1.CODE