Sql server 选择要更新的表的SQL CASE语句

Sql server 选择要更新的表的SQL CASE语句,sql-server,tsql,Sql Server,Tsql,我想用CASE语句来决定更新哪个表 即 可以这样使用CASE吗?不,很遗憾CASE不能这样使用。不,很遗憾CASE不能这样使用。除非使用动态查询(例如:字符串concat,后跟SQL server样式的execute),否则在SQL中无法这样做。每个DML语句都必须标识它正在操作的对象(即表)。除非使用动态查询(例如:字符串concat后跟SQL server样式的execute),否则不能在SQL中执行此操作。每个DML语句必须标识它正在操作的对象(即表)。您不能对多个表执行类似的update

我想用CASE语句来决定更新哪个表


可以这样使用CASE吗?

不,很遗憾CASE不能这样使用。

不,很遗憾CASE不能这样使用。

除非使用动态查询(例如:字符串concat,后跟SQL server样式的execute),否则在SQL中无法这样做。每个DML语句都必须标识它正在操作的对象(即表)。

除非使用动态查询(例如:字符串concat后跟SQL server样式的execute),否则不能在SQL中执行此操作。每个DML语句必须标识它正在操作的对象(即表)。

您不能对多个表执行类似的update语句;除非您可以创建一个跨所有表的视图,并且该视图仍然可以使用更新。如果您可以创建该视图,您将使用案例更新,并在数据未更改的情况下将其设置回原始值。如果没有,您将需要使用

您不能像那样对多个表执行update语句;除非您可以创建一个跨所有表的视图,并且该视图仍然可以使用更新。如果您可以创建该视图,您将使用案例更新,并在数据未更改的情况下将其设置回原始值。如果不是,则需要使用

否,不能在直接的SQL语句中使用大小写。您必须使用过程语言来完成此任务。我假设您使用的是RDMS。

不,您不能在直接的SQL语句中使用大小写。您必须使用过程语言来完成此任务。我假设您使用的是RDMS。

您可以使用IF来获得类似的结果

IF @TableToUpdate = 'Table1'
BEGIN
UPDATE U SET Col = 'Val' FROM Table1 AS U WHERE something = something
END
ELSE IF @TableToUpdate = 'Table2'
BEGIN
UPDATE U SET Col1 = 'Val' FROM Table2 AS U WHERE something = something
END

你可以用IF来得到类似的东西

IF @TableToUpdate = 'Table1'
BEGIN
UPDATE U SET Col = 'Val' FROM Table1 AS U WHERE something = something
END
ELSE IF @TableToUpdate = 'Table2'
BEGIN
UPDATE U SET Col1 = 'Val' FROM Table2 AS U WHERE something = something
END

请标记您正在使用的DBMS否,
CASE
不像某些语言(如VB)中那样是用于控制流的语句
CASE
是一个返回单个标量值的表达式。请标记您正在使用的DBMS否,
CASE
与某些语言(如VB)中的语句不同,不是用于控制流的语句<代码>大小写是一个返回单个标量值的表达式。谢谢大家。。。这就解释了为什么我不能理解语法。是的,我正在使用TSQL和SSMS。谢谢大家。。。这就解释了为什么我不能理解语法。是的,我正在使用TSQL和SSMS。这正是我要使用的,但我认为如果我能用CASE语句设置它,它会更容易阅读(并节省空间)。。。谢谢这正是我将要使用的,但我认为如果我能用案例陈述来设置它会更容易阅读(并节省空间)。。。谢谢