Sql server 2012 如何在一个查询中使用多个where子句更新多个表

Sql server 2012 如何在一个查询中使用多个where子句更新多个表,sql-server-2012,sql-update,multiple-tables,Sql Server 2012,Sql Update,Multiple Tables,是否有一种方法可以使用一个sql查询执行多个更新 比如: UPDATE Table1 SET Column1 = Expression1 WHERE Conditions 1 SET Column2 = Expression2 WHERE Conditions 2 SET Column3 = Expression3 WHERE Conditions 3 ...; 谢谢大家! 是的,它看起来像一个反模式,但从语法上讲,您可以使用表达式: UPDATE Table1 SET Column1

是否有一种方法可以使用一个sql查询执行多个更新

比如:

UPDATE Table1
SET Column1 = Expression1 WHERE Conditions 1
SET Column2 = Expression2 WHERE Conditions 2
SET Column3 = Expression3 WHERE Conditions 3
...;

谢谢大家!

是的,它看起来像一个反模式,但从语法上讲,您可以使用表达式:

UPDATE Table1
SET 
  Column1 = ( case when condition1 then Expression1 else Column1 end  ),
  Column2 = ( case when condition2 then Expression2 else Column2 end  )

顺便说一句,我猜您是将“多个表”与“多个列”混合在一起的。

一个DML语句一次只能影响一个对象(即
),而不是多个对象。如果需要
UPDATE
x个表,则需要发出x个
UPDATE
语句。
CASE
表达式。