mysql降序排序后取第一条记录_怎么从mysql按某一字段降序排列后取出有并列数据的记录?...

你的位置:

问答吧

-> PHP

-> 问题详情

怎么从mysql按某一字段降序排列后取出有并列数据的记录?

想要求出学号为202开头的学生总分前N名的语文平均分。但是以下php语句查询后,$num取总分前7名的时候,显示出来的学号明显不对。请问:这个错在哪里?

学号     语文   数学   总分

20313   108     141     249

20114   114     134     248

20120   122     126     248

20205   109     139     248

20314   113     135     248

20125   113     134     247

20212   110     137     247

20261   113     134     247

20201   96       150     246

20307   113     133     246

$sql   =   "select   avg(chinese)   from   (select   id,total   from   test200702   where   id   >   20100   AND   id   <   20370   order   by   total   desc   limit   0,$num)   as   a   where   id   like   '202% ' ";

$query=mysql_query($sql);

while   ($row   =   mysql_fetch_array($query))   {

echo   $row[id]. "
";

}

作者: huaiping

发布时间: 2007-02-09

当以上的   $num   =   6   时,显示的结果是:

20205

20261

而不是我想要的正确结果(实际上并列第6名的有两个202班级的,都应该算):

20205

20212

20261

作者: huaiping

发布时间: 2007-02-09

SELECT   id,avg(chinese)   FROM   test200702   WHERE   id   BETWEEN   20200   AND   20299   ORDER   BY   total   DESC   LIMIT   $num;

作者: sstogz

发布时间: 2007-02-10

Thanks   all   the   same!楼上的可能没太懂我的意思。

按所有班级学生的总分降序排列后,取年级前N名,在这年级总分前N名当中,计算班级202开头的那些学生语文的平均分。

作者: huaiping

发布时间: 2007-02-10

那么修改一下吧:

SELECT   avg(chinese)   FROM   (   SELECT   *   FROM   test200702   WHERE   id   BETWEEN   20100   AND   20370   ORDER   BY   total   DESC   LIMIT   $num   )   AS   a   WHERE   id   BETWEEN   20200   AND   20299;

作者: sstogz

发布时间: 2007-02-10

非常感谢sstogz!!!

id用大于和小于判断无法取出正确的结果,但是用between就可以。纳闷中。。。。。。

不过问题总算是解决了!

作者: huaiping

发布时间: 2007-02-10

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值