开发者社区> 问答> 正文

mysql成绩排名,如何写sql语句

假设 table 表有 id,name,mark 三个字段

     查出学生成绩并按成绩进行排名次 ,sql怎么写呢?(成绩相等的学生并列名次)
     求大神帮助。

展开
收起
落地花开啦 2016-02-13 10:25:29 3673 0
1 条回答
写回答
取消 提交回答
  • 喜欢技术,喜欢努力的人

    你参考一下下面的代码,可不可行

    USE test; 
    DROP TABLE IF EXISTS `stu_mark`; 
    CREATE TABLE `stu_mark` ( 
      `id` INT(10) NOT NULL AUTO_INCREMENT, 
      `name` VARCHAR(20) NOT NULL, 
      `mark` INT(11) NOT NULL, 
      PRIMARY KEY (`id`) 
    ) ENGINE=INNODB DEFAULT CHARSET=utf8; 
    INSERT INTO stu_mark(`name`, `mark`) 
    VALUES ('lisi',10),('zhangsan',20),('wangwu',20),('zhaoliu',30),('liuqi',50),('anjiu',100); 
    SELECT `name`, `mark`,sor FROM( 
        SELECT `name`, `mark` 
           ,(CASE WHEN @tMark=mark THEN @tm ELSE @tm :=@tm+1 END) AS sor 
           ,(@tMark:=mark) AS tm 
        FROM  `stu_mark` AS m ,(SELECT @tm :=0,@tMark:=0) AS t1
       ORDER BY mark DESC
    ) AS t2 
    ORDER BY t2.sor desc 
    2019-07-17 18:41:47
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
One Box: 解读事务与分析一体化数据库 HybridDB for MySQL 立即下载
One Box:解读事务与分析一体化数据库HybridDB for MySQL 立即下载
如何支撑HTAP场景-HybridDB for MySQL系统架构和技术演进 立即下载

相关镜像