首页 > MySQL 能用对字段的大小进行排序吗?

MySQL 能用对字段的大小进行排序吗?

比如我想把 名次 按照 总分 排序,然后填到名词里,
不是单纯的要一个排序结果..

这个SQL有自己的排序语句,还是得用 PHP 或者 java 等读出来,然后排完序,再放回去?

如果能用SQL排序的话,麻烦告诉我一下,如果是得用 php java 的话,过程就不用细说了,告诉我一下就行;

+----+------+--------+------+------+------+------+------+------+------+----------+----------+------+------+
| id | 学号 | 姓名   | 语文 | 数学 | 英语 | 政治 | 历史 | 地理 | 生物 | 主科总分 | 副科总分 | 总分 | 名次 |
+----+------+--------+------+------+------+------+------+------+------+----------+----------+------+------+
|  1 | 5645 | 王帅   |   91 |  105 |  117 |   95 |   89 |   84 |   87 |      313 |      355 |  668 |    0 |
|  2 | 4923 | 高凯璇 |   90 |  111 |  114 |   90 |   84 |   80 |   80 |      315 |      334 |  649 |    0 |
|  3 | 3249 | 张美婷 |   94 |  104 |  112 |   88 |   80 |   80 |   81 |      310 |      329 |  639 |    0 |
|  4 | 2080 | 张迁   |   85 |  104 |  110 |   90 |   86 |   84 |   79 |      299 |      339 |  638 |    0 |
|  5 | 3274 | 赵佳红 |   77 |   92 |  109 |   96 |   91 |   78 |   87 |      278 |      352 |  630 |    0 |
|  6 |  113 | 徐铭扬 |   81 |   94 |  112 |   88 |   94 |   79 |   69 |      287 |      330 |  617 |    0 |
|  7 | 7658 | 高晗   |   77 |  101 |  110 |   92 |   85 |   69 |   80 |      288 |      326 |  614 |    0 |
|  8 | 7158 | 孙天昊 |   83 |   91 |  100 |   87 |   88 |   68 |   87 |      274 |      330 |  604 |    0 |
|  9 | 9038 | 卢思彤 |   82 |  100 |  111 |   88 |   88 |   55 |   78 |      293 |      309 |  602 |    0 |
| 10 | 4605 | 高佳缘 |   78 |   75 |  110 |   87 |   82 |   80 |   88 |      263 |      337 |  600 |    0 |

SQL中采用ORDER BY进行排序SELECT ... FROM ... WHERE .... ORDER BY 总分 DESC
不过排序针对的是查询结果,并不会完成你说的排序完,再放回去的过程,也就是说,只会对查询结果排序,不会体现在数据库存储的数据中。


?这种好像还真没有,只能对查询的结果进行排序。不知道你为什么要在表里有个字段来表示总分的名次,这个字段的值在有新纪录插入的时候就会改变,这种开销是很大的。
在查询时候使用排序就好啦,不用特意在表里面加个排名字段吧,数据库只要做好存储就好了,并不需要它知道每个人的名次,客户看的是界面,只要在显示时候看就好啦,又不用他去查表。
?假期前的划水时间


select * from c1 ORDER BY 总分

不知道你的使用场景是什么,是想要返回排名列表还是想要通过id取得它的排名,如果是第一种,楼上的方法已经可以满足,如果是第二种,可以粗略的用这个实现

select count(1) as 排名 from your_table where 总分 >= (select 总分 from your_table where id = `id`)

如果换成Oracle数据库,有rank函数可以很方便实现取排名的功能

【热门文章】
【热门文章】