mysql 重新生成排序字段_mysql排序生成排名字段

中午,小牛发来消息给一个数据表进行排名,然后根据分数生成排名字段,想了想,排序其实不难,关键是要生成新字段,觉得目前有两种思路可行:

表;student

id   socre

1001  90

1002  92

1003  86

要生成结果:

mingci id  socre

1    1002   92

2    1001   90

3   1003    86

一 先进行排序查询,然后对结果集进行从头到尾的遍历,根据行号作为排名字段的值,缺点是对于大型数据库,不适合实时排序,适合定期更新

二利用如下语句,生成临时表

create   temporary   table   stu(mc   int   auto_increment   primary   key,id int,score int)   select   id,score   from   student order   by   score  desc;

select * from stu

可以实现上面结果。

想起前几天接的一个小单,也有SQL的操作,头一次使用CASE语句(ACCESS里用IIF),再次体会了SQL的强大,一并写下来:

数据表resultlist

id   sutdent_id bug_id   item_id  result

1    1             1       2        1

2    1             2       1         11

3    1             1       1         111

4    2             2       1         111

5    2             1       1         111

要根据student_id 和bug_id字段,来统计result字段(比如值为的111的个数),然后分别显示出来,

SQL语句:

SELECT student_id, bug_id, sum(iif(result=1,1,0)) AS no1,sum(iif(result=11,1,0)) AS no2,sum(iif(result=111,1,0)) AS no3

FROM resultlist

GROUP BY student_id, bug_id;

结果为:

student_id   bug_id  no1  no2    no3

1             1       0   0       1

1             2       1   1       0

2             1       0   0       1

2             2       0   0       1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值