Ger*_*bdo 42 sql group-by sql-update
我试图在MS-SQL上执行此操作,但只是在逐行返回错误
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
Run Code Online (Sandbox Code Playgroud)
有谁知道如何解决这个性能良好的问题.
Cod*_*ian 62
尝试
;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
Run Code Online (Sandbox Code Playgroud)
小智 21
在SQL Server中,您可以在更新查询中进行聚合,只需在子查询中执行聚合,然后将其加入要更新的表中.
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
Run Code Online (Sandbox Code Playgroud)
这样做:
WHERE total in (select id from #temp)
Run Code Online (Sandbox Code Playgroud)
然后:
INNER JOIN counts
ON t.id = counts.total
Run Code Online (Sandbox Code Playgroud)
多余.
联接解决了"总在(...)"的要求.组上键然后加入.
Sql*_*yan 13
您不能在UPDATE查询中使用聚合,对于初学者 - 虽然您没有在原始问题中包含错误消息,但我怀疑这是它告诉您的内容.
您需要在更新之前计算聚合并将结果存储在临时表中,然后加入该表以进行更新.