Mysql关于同时使用Group by 和Order by问题

在工作中,有个业务逻辑【类似】需要获取每个用户最高的奖励金额,一开始想到的是先使用group by 对用户进行分组, 再order by 按照时间降序排列。

(第一次尝试)于是执行sql语句:

SELECT * FROM reward  GROUP BY uid ORDER BY money desc

结果不符合预期: roup by 和 order by 一起使用时,会先使用group by 分组,并取出分组后的第一条数据,所以后面的order by 排序是根据取出来的第一条数据来排序的,但是第一条数据不一定是分组里面的最大数据

(第二次尝试)构建sql语句

SELECT * FROM (SELECT * FROM reward ORDER BY  money desc)r  GROUP BY r.uid

结果不符合预期:发现“mysql 5.7 中order by 和GROUP BY 一起使用 order by 不生效”,必须加上limit限制 ,避免系统会把order by优化掉。 

 最终写法:

SELECT * FROM (SELECT * FROM reward ORDER BY  money desc limit 10000000000000)r  GROUP BY r.uid // 但是此写法性能可能有问题。

相关推荐

  1. Mysql关于同时使用Group by Order by问题

    2024-03-18 05:14:03       46 阅读
  2. Hive使用双重GroupBy解决数据倾斜问题

    2024-03-18 05:14:03       58 阅读
  3. 关于npmyarn的使用(自己的问题记录)

    2024-03-18 05:14:03       35 阅读
  4. elasticsearchmysql数据库的数据同步问题(二)

    2024-03-18 05:14:03       41 阅读
  5. 关于Mysql表中使用‘utf8mb4_unicode_ci’字符集问题

    2024-03-18 05:14:03       41 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-18 05:14:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-18 05:14:03       101 阅读
  3. 在Django里面运行非项目文件

    2024-03-18 05:14:03       82 阅读
  4. Python语言-面向对象

    2024-03-18 05:14:03       91 阅读

热门阅读

  1. html元素基本使用

    2024-03-18 05:14:03       50 阅读
  2. leetcode-提莫攻击

    2024-03-18 05:14:03       47 阅读
  3. [青龙面板]依赖管理一键安装/免代码安装

    2024-03-18 05:14:03       38 阅读
  4. 程序员如何规划职业赛道?

    2024-03-18 05:14:03       46 阅读
  5. 粤嵌6818开发板嵌入式开发Linux内存映射

    2024-03-18 05:14:03       47 阅读
  6. [hive面试必备]-hive如何解决数据倾斜问题

    2024-03-18 05:14:03       41 阅读
  7. 描述CSS选择器及其优先级规则

    2024-03-18 05:14:03       39 阅读
  8. sui move 动态字段练习(4)

    2024-03-18 05:14:03       38 阅读