使用SQL中的select选择查询和插入

时间:2015-03-15 21:39:26

标签: sql sql-server

我有一个像这样的选择查询:

select 
    SUM(Percentage) as SUM, 
    @cnt as Count, 
    (SUM(Percentage) / @cnt) as Percentage 
from 
    #Temp2 
group By 
    RowNumber 
order by 
    Percentage desc
上述查询的

Percentage列看起来像这样:

enter image description here

然后我在查询上面有一个查询:

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列中显示以下结果:

enter image description here

我不明白为什么上述查询计算的百分比有不同?

但是,第一次查询结果正确,第二次查询出错。

1 个答案:

答案 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)