日期:2014-05-17  浏览次数:20573 次

关于SQL 统计
我有2长表。
一张学生表 student  里面有成绩sumgrade 字段用来存储学生总成绩。
一张成绩表 grade  里面有stugrade字段表示一个学生每门门课的成绩,例如:

如何算student表里面的sumgrade字段呢,有什么效率高的方法。
sqlserver

------解决方案--------------------
update a set sumgrade=b.stugrade
from student a
inner join 
(select StudentID,SUM(stugrade) as stugrade
from grade
group by StudentID
)b on a.StudentID=b.StudentID

select * from student


------解决方案--------------------
left join查询:左边全部显示;右边符合条件就显示,不符合条件则为null.
right join查询:右边全部显示;左边符合条件就显示,不符合条件则为null.

inner join 连接: 两个表完全相匹配的行,才能在结果集中显示出现 
------解决方案--------------------
顶顶顶
------解决方案--------------------
引用:
我有2长表。
一张学生表 student  里面有成绩sumgrade 字段用来存储学生总成绩。
一张成绩表 grade  里面有stugrade字段表示一个学生每门门课的成绩,例如:

如何算student表里面的sumgrade字段呢,有什么效率高的方法。


在成绩表 grade插入记录时,封装更新student.sumgrade 字段
------解决方案--------------------
通过子查询就可以执行,你试试:


update student
set sumgrade= (select SUM(stugrade) 
           from grade
           where grade.StudentID = student.StudentID
           )

select * from student