Mar*_*ret 91 sql t-sql sql-server
我正在尝试将一个表中的值设置为另一个表中的值的总和.这些方面的东西:
UPDATE table1
SET field1 = SUM(table2.field2)
FROM table1
INNER JOIN table2 ON table1.field3 = table2.field3
GROUP BY table1.field3
Run Code Online (Sandbox Code Playgroud)
当然,正如这一点,它将无法工作 - SET不支持SUM,也不支持GROUP BY.
我应该知道这一点,但我的想法是空白的.我究竟做错了什么?
JBr*_*oks 143
UPDATE t1
SET t1.field1 = t2.field2Sum
FROM table1 t1
INNER JOIN (select field3, sum(field2) as field2Sum
from table2
group by field3) as t2
on t2.field3 = t1.field3
Run Code Online (Sandbox Code Playgroud)
使用:
UPDATE table1
SET field1 = (SELECT SUM(t2.field2)
FROM TABLE2 t2
WHERE t2.field3 = field2)
Run Code Online (Sandbox Code Playgroud)
使用 CROSS APPLY 的好情况
UPDATE t1
SET t1.field1 = t2.field2Sum
FROM table1 t1
CROSS APPLY (SELECT SUM(field2) as field2Sum
FROM table2 t2
WHERE t2.field3 = t1.field3) AS t2
Run Code Online (Sandbox Code Playgroud)
或者你可以混合使用JBrooks和OMG Ponies答案:
UPDATE table1
SET field1 = (SELECT SUM(field2)
FROM table2 AS t2
WHERE t2.field3 = t1.field3)
FROM table1 AS t1
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
89439 次 |
| 最近记录: |