免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 7024 | 回复: 14
打印 上一主题 下一主题

mysql数据排名的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-12-20 22:08 |只看该作者 |倒序浏览
记录号   语文  名次
30106  127    2
30109  127    2
30523  126    3
30526  125    5
30334  125    5

在msyql中有“学号”,“姓名”,“语文”,“语文单科名次”等字段,以上是用php按分数降序排列输出的数据,但是有相同分数的时候,名次明显不对。

  $sql2 = "select recno,yuwen,(select count(yuwen) from g2008 where yuwen >= (select yuwen from g2008 where recno = '$row[0]' order by yuwen desc limit 1)) as rank from g2008 where recno = '$row[0]';";

  $result2 = mysql_query($sql2, $conn);

  $array  = mysql_fetch_array($result2);

请问:怎么才能输出如下结果?谢了先!

记录号   语文  名次
30106  127    1
30109  127    1
30523  126    3
30526  125    4
30334  125    4

论坛徽章:
0
2 [报告]
发表于 2008-12-21 22:35 |只看该作者
这一条SQL能搞定吗
需要外部程序辅助。

论坛徽章:
0
3 [报告]
发表于 2008-12-22 14:03 |只看该作者

一般人我不告诉

原帖由 nothing9 于 2008-12-20 22:08 发表
记录号   语文  名次
30106  127    2
30109  127    2
30523  126    3
30526  125    5
30334  125    5

在msyql中有“学号”,“姓名”,“语文”,“语文单科名次”等字段,以上是用php按分数降序排 ...


SELECT b.recno , b.yuwen  , (

SELECT count( 1 ) + 1
FROM g2008 a
WHERE a.yuwen > b.yuwen
) as rank
FROM g2008 b



+-------+-------+------+
| recno | yuwen | rank |
+-------+-------+------+
| 30106 |   127 |    1 |
| 30109 |   127 |    1 |
| 30523 |   126 |    3 |
| 30526 |   125 |    4 |
| 30334 |   125 |    4 |
+-------+-------+------+
5 rows in set (0.00 sec)



论坛徽章:
0
4 [报告]
发表于 2008-12-22 14:45 |只看该作者
这里都快成mysql的二级基地了

论坛徽章:
0
5 [报告]
发表于 2008-12-23 17:49 |只看该作者
请问三楼的老师,那个 a b分别代表什么意思呢?谢谢!

论坛徽章:
0
6 [报告]
发表于 2008-12-23 18:10 |只看该作者
while($row = mysql_fetch_row($result)){

  $sql2 = "SELECT b.recno, b.yuwen, (SELECT count(1)+1 FROM g2008 a WHERE a.yuwen > b.yuwen) as rank FROM g2008 b;";
  $result2 = mysql_query($sql2, $conn);
  $array  = mysql_fetch_array($result2);

  echo $array[0];
}

返回的值为都为1.

论坛徽章:
0
7 [报告]
发表于 2008-12-23 18:46 |只看该作者
又是分数排名啊?

论坛徽章:
0
8 [报告]
发表于 2008-12-24 10:34 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
9 [报告]
发表于 2008-12-24 14:02 |只看该作者
原帖由 nothing9 于 2008-12-23 18:10 发表
while($row = mysql_fetch_row($result)){

  $sql2 = "SELECT b.recno, b.yuwen, (SELECT count(1)+1 FROM g2008 a WHERE a.yuwen > b.yuwen) as rank FROM g2008 b;";
  $result2 = mysql_query($sql2, $c ...


while($row = mysql_fetch_row($result)){

  $sql2 = "SELECT b.recno, b.yuwen, (SELECT count(1)+1 FROM g2008 a WHERE a.yuwen > b.yuwen) as rank FROM g2008 b;";
  $result2 = mysql_query($sql2, $conn);
  $array  = mysql_fetch_array($result2);

  echo $array[0];
}



自己找找原因吧

论坛徽章:
0
10 [报告]
发表于 2008-12-26 10:31 |只看该作者
非常不错,把表作为表的参照,明确了一张表多用
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP