例如有表 T_STUDENT,T_SCORE, student表主键ID,还有一列NAME,score 表有外键 STUDENTID, ENGLISH,MATH,CHINESE,score 表记录每个学生不同科目,不同时间,的成绩
现在要查询出所有学生 各门成绩最好的记录
结果集如下
NAME MAXENGLISH MAXMATH MAXCHINESE我用的是子查询的方法,但效率好低啊,数据量一大,慢得要死
请问有什么高效的方法吗
现在要查询出所有学生 各门成绩最好的记录
结果集如下
NAME MAXENGLISH MAXMATH MAXCHINESE我用的是子查询的方法,但效率好低啊,数据量一大,慢得要死
请问有什么高效的方法吗
解决方案 »
- 急求一个MS SQLSERVER存储过程!急!!!
- 生成SQL脚本,如何生成表数据的Insert...
- 请问SQL Server和Microsoft数据引庭(MSDE)的区别和联系?
- 列变行,急!
- 在执行批处理时出现错误。错误消息为: 目录名无效。补丁已打,请大侠详解解决过程,不甚感激
- 存储过程错误【帮我看看】
- sql 更新问题求助
- 急急急急解决100分相送 如何将一个表的数据从一个数据库拷到另一个数据库,只这一个表
- 请教SQL Server 7.0数据库设计的基本问题!
- 发布时遇到"distributor_admin"未在该服务器上定义为远程登录
- SQL2008中怎么创建存储过程
- 一个令我头疼的排列组合算法问题
from T_STUDENT m ,T_SCORE n
where m.STUDENTID = n.STUDENTID and n.score = (select max(score) from T_SCORE where 科目 = n.科目)select m.* , n.*
from T_STUDENT m ,T_SCORE n
where m.STUDENTID = n.STUDENTID and not exists (select 1 from T_SCORE where 科目 = n.科目 and score > n.score)不过:建议你提供详细的资料:
例如表的结构,表之间的关系,测试数据,相关算法及需要的结果。
这样有助于我们理解你的意思,更主要的是能尽快让你获得答案或解决问题的方法。
将你的查询条件字段上建索引(最好能建个包含索引)
比如
create index idx_name on table_name include (NAME,MAXENGLISH,MAXMATH,MAXCHINESE)
,MAX(MATH)as MAXMATH
,MAX(CHINESE) as MAXCHINESE
FROM T_STUDENT S Inner join T_SCORE SC on T.ID=SC.STUDENTID
GROUP BY NAME
???????
max(HINESE) as MAXCHINESE from T_STUDENT left join T_SCORE
on T_STUDENT.id=T_SCORE.STUDENTID
max(HINESE) as MAXCHINESE from T_STUDENT left join T_SCORE
on T_STUDENT.id=T_SCORE.STUDENTID
where date ......
group by NAME
from T_STUDENT A
inner join
(
select STUDENTID,max(ENGLISH) as MAXENGLISH,max(MATH) as MATH,max(CHINESE) as CHINESE
from T_SCORE
group by STUDENTID
) B on B.STUDENTID = A.Id
select NAME,max(ENGLISH) as MAXENGLISH,max(MATH ) as MAXMATH ,
max(HINESE) as MAXCHINESE from T_STUDENT left join T_SCORE
on T_STUDENT.id=T_SCORE.STUDENTID and 其他条件.
from T_STUDENT m ,T_SCORE n
where m.STUDENTID = n.STUDENTID
and n.score = (select max(score) from T_SCORE where 科目 = n.科目 and STUDENTID =nSTUDENTID )首先我局的上面很多语句可能结果都不对
其次外键这东西根本没必要用
再然后 score 里面的有个 自增id 作为主键
科目,学生id, 分数 这三列上有一个普通索引
这三个属性确定一个学生的成绩,这三个条件也最用以组合起来使用。主键默认情况会加聚集索引,没有主键的表,普通索引的利用率很低的