我有一个像这样的选择查询:
select
SUM(Percentage) as SUM,
@cnt as Count,
(SUM(Percentage) / @cnt) as Percentage
from
#Temp2
group By
RowNumber
order by
Percentage desc
上述查询的 Percentage
列看起来像这样:
然后我在查询上面有一个查询:
Update dbo.ResultsStored
set FinalSearchSeral = @searchNumber,
ModifiedAt = getDate(),
PercentMatch = t.Perc
from
(select (SUM(Percentage) / @cnt) as Perc
from #Temp2
GROUP BY RowNumber) t
where
HashedKey = HASHBYTES('MD5', @StringConcat)
select *
from dbo.ResultsStored
order by PercentMatch desc
注意:此处where
子句不是问题,因为我打算仅使用匹配的哈希码代码更新行。
select语句的结果令我感到困惑。
上面的select语句会在Percentage列中显示以下结果:
我不明白为什么上述查询计算的百分比有不同?
但是,第一次查询结果正确,第二次查询出错。
答案 0 :(得分:6)
结果是预期的,在更新中你需要指定哪个字段应该从查询中获取哪个值我的意思是使用Join
,试试这个(正如你在评论中提到的,如果rowid可以是连接列):< / p>
Update dbo.ResultsStored
set dbo.ResultsStored.FinalSearchSeral = @searchNumber,
dbo.ResultsStored.ModifiedAt = getDate(),
dbo.ResultsStored.PercentMatch = t.Perc
from
dbo.ResultsStored
join
(select RowId,(SUM(Percentage) / @cnt) as Perc
from #Temp2
GROUP BY RowId) t
on dbo.ResultsStored.RowId=t.RowId
and dbo.ResultsStored.HashedKey = HASHBYTES('MD5', @StringConcat)