• Mysql 数据分组取某字段值所有最大的记录行


    需求:

    表中同一个uid(用户)拥有多条游戏等级记录,现需要取所有用户最高等级(level)的那一条数据,且时间(time)越早排越前。这是典型的排名表

    +------+-------+--------------+---------------------+
    | uid  | level | role         | time                |
    +------+-------+--------------+---------------------+
    | 7    |     1 | 摇滚圣魔     | 2014-06-12 15:01:05 |
    | 1134 |     4 | 唯我独尊     | 2014-06-12 15:02:38 |
    | 1134 |     4 | 唯我独尊     | 2014-06-12 15:02:39 |
    | 7    |     3 | 摇滚圣魔     | 2014-06-12 15:02:59 |
    | 5    |     3 | 韵儿铃♦      | 2014-06-12 15:04:09 |
    | 7363 |     6 | 诗荷冰月     | 2014-06-12 15:04:23 |
    | 6684 |     4 | つ道远虚空つ | 2014-06-12 15:05:13 |
    | 7    |    16 | 摇滚圣魔     | 2014-06-12 15:05:46 |
    | 1    |     2 | 斗土豪       | 2014-06-12 15:05:48 |
    | 7    |    26 | 摇滚圣魔     | 2014-06-12 15:08:36 |
    | 6684 |     8 | つ道远虚空つ | 2014-06-12 15:08:45 |
    | 5    |    12 | 韵儿铃♦      | 2014-06-12 15:09:47 |
    | 6834 |     1 | 无敌追翼     | 2014-06-12 15:10:56 |
    | 5    |    16 | 韵儿铃♦      | 2014-06-12 15:11:18 |
    | 8719 |     1 | 君望赤       | 2014-06-12 15:11:48 |
    | 6274 |    36 | 五月独孤     | 2014-06-12 15:12:22 |
    | 8724 |    26 | 童童         | 2014-06-12 15:12:31 |
    | 1134 |    32 | 唯我独尊     | 2014-06-12 15:12:51 |
    | 7    |    26 | 摇滚圣魔     | 2014-06-12 15:13:38 |
    | 5    |    25 | 韵儿铃♦      | 2014-06-12 15:14:48 |
    | 7757 |     3 | つ清灵旋つ   | 2014-06-12 15:16:50 |
    | 7    |    26 | 摇滚圣魔     | 2014-06-12 15:17:26 |
    | 5    |    28 | 韵儿铃♦      | 2014-06-12 15:18:08 |
    | 7757 |    23 | つ清灵旋つ   | 2014-06-12 15:19:29 |
    | 6274 |    43 | 五月独孤     | 2014-06-12 15:19:54 |
    | 8724 |    30 | 童童         | 2014-06-12 15:20:39 |
    | 7757 |    26 | つ清灵旋つ   | 2014-06-12 15:20:58 |
    | 8707 |    36 | 就是干       | 2014-06-12 15:22:28 |
    | 7757 |    29 | つ清灵旋つ   | 2014-06-12 15:23:05 |
    | 7757 |    32 | つ清灵旋つ   | 2014-06-12 15:24:57 |
    | 8726 |    10 | 连曦         | 2014-06-12 15:26:01 |
    | 7363 |    34 | 诗荷冰月     | 2014-06-12 15:26:58 |
    | 7    |    26 | 摇滚圣魔     | 2014-06-12 15:27:33 |
    | 5    |    37 | 韵儿铃♦      | 2014-06-12 15:27:37 |
    | 8347 |     1 | 无敌         | 2014-06-12 15:28:09 |
    | 6274 |    47 | 五月独孤     | 2014-06-12 15:28:13 |
    | 1    |    32 | 斗土豪       | 2014-06-12 15:29:18 |
    | 1134 |    46 | 唯我独尊     | 2014-06-12 15:30:52 |
    | 7757 |    41 | つ清灵旋つ   | 2014-06-12 15:30:56 |
    | 9    |    34 | 饭饭饭饭の   | 2014-06-12 15:31:03 |
    | 6274 |    48 | 五月独孤     | 2014-06-12 15:31:18 |
    | 8724 |    41 | 童童         | 2014-06-12 15:32:30 |
    | 7757 |    42 | つ清灵旋つ   | 2014-06-12 15:34:24 |
    | 1134 |    48 | 唯我独尊     | 2014-06-12 15:34:56 |
    | 1100 |     2 | 圣魔霄       | 2014-06-12 15:35:54 |
    | 1008 |    21 | ∵嘟嘟冰儿∵ | 2014-06-12 15:36:10 |
    | 7757 |    45 | つ清灵旋つ   | 2014-06-12 15:40:49 |
    | 3088 |     4 | 战魂☼凌空    | 2014-06-12 15:41:38 |
    | 5    |    41 | 韵儿铃♦      | 2014-06-12 15:41:56 |
    | 7757 |    46 | つ清灵旋つ   | 2014-06-12 15:43:24 |

    实现过程:

    1.首先对该数据进行2次排序,uid 排序以及等级的降序排序

    2.对排序后的结果用uid进行分组,分组后等级降序排序,时间升序排序

    实现SQL:

    select * from (select a.uid,a.level,a.role,a.time from 数据表 a 
    where order BY a.uid desc,a.level desc) as 别名 group by user_uid order by level desc,time asc limit 30;
  • 相关阅读:
    postman获取请求响应值
    http常用状态码说明
    postman的Testing examples(测试脚本示例)
    JMeter 如何把上一个请求的结果作为下一个请求的参数 —— 使用正则提取器
    一个绿色版的正则表达式测试工具
    让TinyXML保存文件为UTF-8格式
    TinyXml2 的使用
    Apache Thrift
    解决sqlserver的sql脚本内存不足问题
    一个表的两个字段具有相同的类型。如何仅用SQL语句交换这两列的数据?
  • 原文地址:https://www.cnblogs.com/shibazi/p/3848725.html
Copyright © 2020-2023  润新知