如何在Solaris8&9下配置Apace+PHP+...
校园网的需要,兄弟们帮帮我。
作者 ll1618 发布于 0000-00-00 分类:php基础编程
假如一个数据库中grade表是全年级的学生,name列是学生姓名,class列区分班级,result列表示成绩。
期终考试后,全年级第一名是1班的,2、3名是二班的,4名是一班的,5名是三班的,用一条select语句能否选出各个班的第一名,在本例中,应select出1、2、5。
这条语句应如何编写?
逛论坛交流:这种情况一条select语句能够完成吗?
select class,name,result from grade group by class
ok!3qs
QUOTE: 最初由 Ken.Chou 发布
[B]select class,name,max(result) from grade group by class [/B]
这样是不正确的
查询出的 max(result) 确实是第一名的成绩,而 name 却未必是第一名的 name~
sorry,改成这样吧
select class,name,result from grade group by class
QUOTE: 最初由 Ken.Chou 发布
[B]sorry,改成这样吧
select class,name,result from grade group by class [/B]
这样就连第一名的成绩也查询不出来了
QUOTE: 最初由 Eks 发布
[B]这样就连第一名的成绩也查询不出来了 [/B]
那应该怎么写呢
如果数据库支持子查询,SQL可以这样写:
SELECT * FROM grade as g1 WHERE result=(SELECT MAX(g2.result) FROM grade as g2 WHERE g1.class = g2.class)
如果是用MySQL的话,一个查询几乎是不可能的~ 至少我现在想不到。。。。
失败啊,而且 select class,name,result from grade group by class 这种语句居然每个分类只显示一条记录,并且好像是按照存储顺序显示的
那看来数据库结构不能这样设计了,但如果以各个班来设计的话,好象在汇总时又有其他方面的问题
9 条回复
回复