回 帖 发 新 帖 刷新版面

主题:[原创]一句SQL按成绩排名次

&&全市排名
UPDATE szcjk SET qspm=(select COUNT(a.bmh)+1 from szcjk as a WHERE a.zf>szcjk.zf)


&&县区排名
UPDATE szcjk SET xqpm=(select COUNT(a.bmh)+1 from szcjk as a WHERE a.zf>szcjk.zf AND a.xqdh=szcjk.xqdh)

PS:今天用到时搞出来的,现在搜索本站没有,特与大家分享。

再PS:后来一搜发现其他人早就想出类似的方法,有点受打击[em10]

回复列表 (共3个回复)

沙发

你应该把表放上去,别人也好看明白。

板凳

哈哈,SQL其实很强悍!

3 楼

[quote]你应该把表放上去,别人也好看明白。[/quote]
有点道理,我就再说明几句。
1、关于表的结构
qspm、xqpm:分别为全市排名和各县区排名
bmh:报名号,用以区分学生
zf:总分
xqdh:县区代号,用以区分学生是哪个县的
2、原理说明
UPDATE 表名 SET 字段名=[子查询]
利用子查询求得各个学生的名次
3、要点
update 和子查询针对的实际上是同一个表,通过表的别名(from szcjk as a )来区分字段是UPDATE后的表中的呢还是子查询中的

如果还是不明白,我也没办法了

我来回复

您尚未登录,请登录后再回复。点此登录或注册