有表如下:
- SQL code
学生成绩表(stuscore):姓名:name 课程:subject分数:score学号:stuid张三 数学 89 1张三 语文 80 1张三 英语 70 1李四 数学 90 2李四 语文 70 2李四 英语 80 2
要求:计算每个人的总成绩
方法一:
- SQL code
select distinct t1.name,t1.stuid,t2.allscore from stuscore t1,( select stuid,sum(score) as allscore from stuscore group by stuid)t2where t1.stuid=t2.stuidorder by t2.allscore desc
方法二:
- SQL code
select stuid,name,sum(score) as allscore from stuscore group by stuid,name
我经常用方法二,难道真的影响查询结果的准确?!!!
好担心,项目都写了一半了
------解决方案--------------------
select stuid,max(name),sum(score) as allscore from stuscore group by stuid
我一般这样写,姓名容易重名,学号不会重
------解决方案--------------------
是的,会影响的
你的第二个语句是根据stuid,name
这两个字段来分组的,如果name 有重名的情况就会出现错误结果
------解决方案--------------------
但是如果你能保证id 和name是一对一对应的,就没有问题
------解决方案--------------------