在一条语句中更新sql server行的多列
嗨,我有一个临时表,如下所示在一条语句中更新sql server行的多列,sql,sql-server,Sql,Sql Server,嗨,我有一个临时表,如下所示 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
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等等)
我需要做哪些更改才能使其工作(我想使用一个查询,我知道如何使用多个更新查询使其工作)?因为您有30和60个使用这些值:
update #Temp_Test
set prod = 30 , total = 60
where id = 1
SQL标准不是免费提供的,但据我所知,在这方面有点不清楚,但将其解释为旧值应用于计算语句中的所有表达式要容易得多
因此,如果你所说的“不工作”是指结果为“prod=30,total=40”,那么这就是正确的结果。如果您需要根据另一列的新值计算一列,可以在上面的层(连接到db的代码)中进行计算,也可以在两个查询中进行计算,并封装在一个事务中。为了让下一个来处理它的人清楚明了
DECLARE @NewProd Int = 30
DECLARE @Qty Int = 2
UPDATE #Temp_Test SET
prod = @NewProd,
total = @Qty * @NewProd
WHERE
id = 1
也许你可以定义不工作?这里没有语法错误。更新在更新之前对表值起作用,即设置总计时将使用prod=10。顺便问一下:为什么要将值存储在可以从另一列(“prod*2”)计算的列(“总计”)中?