美文网首页
MySql 数据排序

MySql 数据排序

作者: 月在未央 | 来源:发表于2020-08-27 18:54 被阅读0次

    创建示例表

    CREATE TABLE `test` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `name` varchar(32) DEFAULT NULL,
      `score` double(12,2) DEFAULT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=18 DEFAULT CHARSET=utf8mb4;
    

    填充数据

    image-20200827183328251

    简单排序

    SELECT v.* ,
        CASE 
         WHEN @s = 0 THEN @rk := @rk + 1
        END AS rank
    FROM 
    (
        SELECT * FROM test t ORDER BY score DESC
    ) v,
    (SELECT @s:=0,@rk:=0) w
    
    image-20200827183356765

    相同分数并列

    SELECT v.id,v.name ,v.score AS score ,
        CASE 
         WHEN @s = 0 THEN @rk :=  1  
         WHEN @s = v.score THEN @rk := @rk
         WHEN @s > v.score THEN @rk := @rk + 1
        END AS rank ,@s := score AS bak
    FROM 
    (
        SELECT * FROM test t ORDER BY score DESC
    ) v, 
    (SELECT @s :=0,@rk :=0) w;  
    
    image-20200827185159831

    相关文章

      网友评论

          本文标题:MySql 数据排序

          本文链接:https://www.haomeiwen.com/subject/qrrhsktx.html