这个ACCESS中的SQL语句怎样写?(用一个表的某个合计数,更新另一个表)

表A:
ID 姓名 总分
1 张三 190
2 李四 160

表B
sid 分数
1 100
1 90
2 85
2 75

要求一条SQL语句,表B分数合计数更新表A对应的总分
增加个条件,不想一次更新所有人的总分,只想按给定的条件更新某个人的(比如 A.ID=1)

------------------------------
这个问题自己用DSUM函数解决了。谁有其他答案仍然可以探讨。

CREATE TABLE b(SID INT,分数 int)
INSERT INTO dbo.b
( SID, 分数 )
SELECT 1,100
UNION ALL 
SELECT 1,90
UNION ALL 
SELECT 2,85
UNION ALL 
SELECT 2,75


CREATE TABLE a(id INT,NAME VARCHAR(10),总分 int)
INSERT INTO dbo.a
        ( id, NAME, 总分 )
SELECT 1,'张三',0
UNION ALL 
SELECT 2,'李四',0

-----更新语句
UPDATE a SET 总分=b.合计
FROM a INNER JOIN (select sid ,SUM(分数) AS 合计 FROM b GROUP BY sid) b ON a.id=b.SID
WHERE a.id=1
.........
1 张三 190
2 李四 0

追问

不好意思,俺这个是ACCESS里的SQL语句,和SQL SERVER里的不一样。

追答

,,那换个写法看能用不,,,
UPDATE a SET 总分=(SELECT 合计
FROM
(select sid ,SUM(分数) AS 合计
FROM b
where a.id=b.sid
GROUP BY sid) b
)
WHERE a.id=1

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-06-24
update A,(select sid,sum(分数) as 分数 from B group by sid) B set A.总分=B.分数 where A.ID=B.sid and A.ID=1追问

你好,按你的答案操作,提示:“操作必须使用一个可更新的查询”,这是为什么?

相似回答