首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL Server更新分组依据

问SQL Server更新分组依据
EN

Stack Overflow用户
提问于 2010-05-18 06:41:41
回答 3查看 94.3K关注 0票数 55

我正尝试在MS-SQL上执行此操作,但在Group by行返回错误

代码语言:javascript
复制
update #temp
Set Dos=Count(1)
From Temp_Table2010 s
where Id=s.Total and s.total in (Select Id from #temp)
group by s.Total

有谁知道我怎样才能有好的性能来解决这个问题。

EN

回答 3

Stack Overflow用户

发布于 2011-08-08 23:47:18

试一试

代码语言:javascript
复制
;with counts 
AS 
( 
    SELECT total, COUNT(*) as dos
    FROM temp_table2010 
    WHERE total in (select id from #temp)
)
UPDATE T 
SET dos=counts.dos
FROM #temp T 
INNER JOIN counts 
    ON t.id = counts.total 
票数 83
EN

Stack Overflow用户

发布于 2013-10-04 02:46:14

在SQL Server中,您可以在更新查询中执行聚合,只需在子查询中执行聚合,然后在要更新的表上连接它。

代码语言:javascript
复制
UPDATE  #temp
SET     Dos = Cnt
FROM    #temp 
    INNER JOIN (SELECT Total, COUNT(*) AS Cnt FROM Temp_Table2010 GROUP BY Total) AS s
        ON Id = s.Total 

执行此操作:

代码语言:javascript
复制
WHERE total in (select id from #temp)

然后:

代码语言:javascript
复制
 INNER JOIN counts 
    ON t.id = counts.total 

是多余的。

连接解决了"total in (...)“要求。在键上分组,然后加入。

票数 28
EN

Stack Overflow用户

发布于 2010-05-18 07:09:49

对于初学者来说,您不能在UPDATE查询中使用聚合-尽管您没有在原始问题中包含错误消息,但我怀疑这就是它告诉您的。

您需要在update之前计算聚合,并将结果存储在临时表中,然后连接到该表以执行update。

票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2853403

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档