繁体   English   中英

在单个语句中更新sql服务器行的多个列

[英]updating multiple columns of a sql server row in a single statement

嗨,我有一个临时表,如下所示。

create table #Temp_Test
(
id int,
prod int,
total int
)

insert into #Temp_Test (id,prod,total) 
values(1,10,20), (2,30,40), (3, 50,60)

我想在一个语句中更新id&prod例如,我想将prod&total更新为30&60,其中id =1。我正在使用以下查询来做到这一点:

update  #Temp_Test
set prod = 30 , total = prod*2
where id = 1

上面的查询将我的产品更新为30,总更新为20,而不是我期望的60。 (Prod * 2只是一个例子,我在这里可能会有不同的计算Prod * 32,Prod * 7等)。

为了使其正常工作,我需要做哪些更改(我想使用一个查询来完成,我知道如何使用多个更新查询来使其工作)?

为了使事情变得顺畅和清晰,以供下一个来工作的家伙.....

DECLARE @NewProd Int = 30
DECLARE @Qty Int = 2

UPDATE #Temp_Test SET 
  prod = @NewProd, 
  total = @Qty * @NewProd
WHERE 
  id = 1

由于您有30和60,请使用以下值:

update  #Temp_Test
set prod = 30 , total = 60
where id = 1

SQL标准不是免费提供的,但据我所知,对此尚不太清楚,但到目前为止,将其解释为说应使用旧值来评估语句中的所有表达式要容易得多。

因此,如果您所说的“不起作用”是指结果为“ prod = 30,total = 40”,那是正确的结果。 如果您需要根据另一列的新值来计算一列,请在上一层(您的连接到db的代码)中进行,或者在包装在事务中的两个查询中进行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM