有一个 A 表,两个字段 name,money,name是唯一的
另外一个 B 表,也有两个字段 name,money,但 name 并不是唯一的
需要将 B 表相同 name 的 money 全部相加后,再加到 A 表对应的 name 的 money 中
--------------------------
A
name, money
b001, 0
b002, 0
b003, 0
b004, 0
-----------
B
name, money
b001, 10
b001, 20
b001, 10
b002, 100
b003, 100
执行后,得到
---------------
A
name, money
b001, 40
b002, 100
b003, 100
b004, 0
------解决方案--------------------
- SQL code
CREATE TABLE testA (NAME VARCHAR(10), [money]int ) INSERT INTO testA SELECT 'b001', 0 UNION ALL SELECT 'b002', 0 UNION ALL SELECT 'b003', 0 UNION ALL SELECT 'b004', 0 CREATE TABLE testB (NAME VARCHAR(10), [money]int) INSERT INTO testB SELECT 'b001', 10 UNION ALL SELECT 'b001', 20 UNION ALL SELECT 'b001', 10 UNION ALL SELECT 'b002', 100 UNION ALL SELECT 'b003', 100 WITH cte AS ( SELECT NAME,SUM(money) [money] FROM testB GROUP BY NAME) UPDATE a SET a.[money]=b.[money] FROM testA a INNER JOIN cte B ON a.NAME=b.NAME SELECT * FROM testA /* (3 行受影响) NAME money ---------- ----------- b001 40 b002 100 b003 100 b004 0 (4 行受影响) */