文档详情

(蔡庐总结)mysql排名语句.pdf

发布:2017-06-01约3.12千字共3页下载文档
文本预览下载声明
(蔡庐总结 )mysql排名语句 mysql排排名名语语句句 说说明明::排排名名最最主主要要解解决决的的问问题题,,就就是是分分数数相相同同的的情情况况。。如如果果积积分分相相同同,,必必须须考考 以以其其他他字字段段进进行行排排序序。。 这这样样才才能能保保证证固固定定的的排排名名顺顺序序。。 -- 创建student表 CREATE TABLE `student` ( `id` varchar(32) NOT NULL, `name` varchar(255) EFAULT NULL, `create_time` datetime EFAULT NULL, `total_score` double EFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=Inno B EFAULT CHARSET=utf8; -- 创建索引 alter table student add index ts (total_score); -- 插入测试数据 insert into student ( id, name, create_time, total_score ) select 123456789,我是当事人,2016-04-20 20:21:00,11.0 union select replace(UUI (),-,),我勒个去,2016-04-20 20:22:00,21.0 union select replace(UUI (),-,),测试的命,2016-04-20 10:23:00,24.0 union select replace(UUI (),-,),开发,2016-04-21 20:24:00,23.0 union select replace(UUI (),-,),产品,2016-04-23 20:25:00,11.0 union select replace(UUI (),-,),牛人,2016-04-22 20:26:00,55.0 union select replace(UUI (),-,),小白,2016-04-24 20:27:00,11.0 union select replace(UUI (),-,),随便,2016-04-25 20:28:00,23.0 union select replace(UUI (),-,),什么人,2016-04-19 20:28:00,11.0 union select replace(UUI (),-,),排名,2016-04-15 20:24:00,11.0 union select replace(UUI (),-,),所在排名,2016-04-26 20:29:00,32.0; 方方法法实实现现一一:: -- 所所有有学学生生排排名名 select s.*, (select count(*)+1 from student p where p.total_scores.total_score or (p.total_score = s.total_score and p.create_time s.create_time) ) as rank from student s order by rank; -- 某某个个学学生生所所在在排排名名 select s.*, (select count(*)+1 from student p where p.total_scores.total_score or (p.total_score = s.total_score and p.create_time s.create_time) ) as rank from student s where s.id = 123456789; 方方法法实实现现二二 : -- 所所有有学学生生排排名名 select p.*, @rank:=@rank+1 as rank from (select * from student s order by s.total_score desc ,s.create_time desc ) p, (SELECT @rank:=0) r -- 某某个个学学生生所所在在排排名名 select t.* from ( select p.*, @rank:=@rank+1 as rank from
显示全部
相似文档