关于SQL查询的问题?急急急!

skig 2006-06-15 04:05:04
现有一个班,有60名学生,每月数学要月考一次,考试成绩按月存在CJ表里,现在我想查询2006年里连续三个月考试成绩为0的学生名单。如何写SQL语句。cj表有字段为:学号;姓名;月份;成绩。急急,请高手给予解决!在线等
...全文
112 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2006-06-16
  • 打赏
  • 举报
回复
哈,少写了点东西

select * from cj as a inner join cj as b on a.学号=b.学号 and a.下月月份=b.月份 inner join cj as c on b.学号=c.学号 and b.下月月份=c.月份 where a.成绩=0 and b.成绩=0 and c.成绩=0 group by a.学号;
「已注销」 2006-06-16
  • 打赏
  • 举报
回复
如果可以改动表的话,改改表增加个月份字段(下个月的月份)

学号;月份;下月月份;成绩;姓名;

1 200606 200607 0 aaa
并在月份上建索引。

sql:
select * from cj as a,cj as b,cj as c where a.下月月份=b.月份 and b.下月月份=c.月份 and a.成绩=0 and b.成绩=0 and c.成绩=0;
XqYuan 2006-06-16
  • 打赏
  • 举报
回复
所有学生当年成绩按月份排序,组成字符串
skig 2006-06-15
  • 打赏
  • 举报
回复
(SELECT `学号`,`姓名`,group_concat(`成绩` order by `月份` SEPARATOR " ") as total from cj 是不是先查出所有成绩为0的学生?
XqYuan 2006-06-15
  • 打赏
  • 举报
回复
select `学号`,`姓名` from
(SELECT `学号`,`姓名`,group_concat(`成绩` order by `月份` SEPARATOR " ") as total from cj group by `学号`) as a
where left(total,6)='0 0 0 ' or right(total,6)=' 0 0 0' or instr(total,' 0 0 0 ')>0

不知道行不行,效率低,还好数据比较少("连续三个月"比较麻烦)

56,677

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧