当前位置: 首页 > news >正文

解决mysql5.7版本中,子查询order by后,对子查询进行group by分组获取最新记录无效的问题

目录

    • 场景简介
    • 原因
    • 示例
      • mysql5.7之前的版本
      • mysql5.7之后的版本
      • 解决
        • 1、使用having
        • 2、使用limit
        • 3、使用子查询获取目标数据ID


场景简介

子查询order by后,对子查询进行group by分组获取最新记录失败

应用场景:一对多的关系,通常需要取最新、最近的一条数据


原因

在 5.7 版本中引入新特性 derived_merge 优化过后,group by子句中使用order by会导致order by失效


示例

在mysql执行以下sql

SELECT ID, IsSystem from (SELECT * from t_user_role  ORDER BY id desc
) as t  GROUP BY IsSystem

mysql5.7之前的版本

当前mysql版本为5.6.51

在这里插入图片描述


各分组最大ID

在这里插入图片描述


对排序后的结果集进行分组,该SQL返回的数据与预期一致

在这里插入图片描述


mysql5.7之后的版本

当前mysql版本为5.7.23

在这里插入图片描述


各分组的最大ID

在这里插入图片描述


对排序后的结果集进行分组,该SQL返回的数据与预期不一致

在这里插入图片描述


解决

1、使用having

在这里插入图片描述


2、使用limit

在这里插入图片描述


3、使用子查询获取目标数据ID

在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • LINQ(二) —— 流式语句
  • 【Unity Shader入门精要 第10章】高级纹理(一)
  • 音视频开发—音频相关概念:数模转换、PCM数据与WAV文件详解
  • 一、Nginx详解和安装
  • 翻译《The Old New Thing》- How do I mark a shortcut file as requiring elevation?
  • 微信小程序毕业设计-跑腿系统项目开发实战(附源码+演示视频+LW)
  • 青蛙跳台阶问题
  • [备忘.经验总结]特例问题通用问题,分而治之
  • 手机App收集个人信息,用户是否有权拒绝?
  • 所有平台均可发布,矩阵操作+工具+素材,自动混剪8090后怀旧视频
  • 牛客循环5.27
  • EPBU/MOBI转PDF
  • fastadmin二次开发 修改默认的前端弹出样式
  • JVM 常见配置参数
  • 汇聚荣科技有限公司怎么样?
  • 【知识碎片】第三方登录弹窗效果
  • 4. 路由到控制器 - Laravel从零开始教程
  • centos安装java运行环境jdk+tomcat
  • Docker 笔记(2):Dockerfile
  • input的行数自动增减
  • JavaScript 无符号位移运算符 三个大于号 的使用方法
  • Java的Interrupt与线程中断
  • LeetCode18.四数之和 JavaScript
  • mockjs让前端开发独立于后端
  • PHP 使用 Swoole - TaskWorker 实现异步操作 Mysql
  • SegmentFault 2015 Top Rank
  • Spark in action on Kubernetes - Playground搭建与架构浅析
  • Spring Boot MyBatis配置多种数据库
  • vue2.0项目引入element-ui
  • 表单中readonly的input等标签,禁止光标进入(focus)的几种方式
  • 回顾2016
  • 力扣(LeetCode)56
  • 微信开源mars源码分析1—上层samples分析
  • 协程
  • python最赚钱的4个方向,你最心动的是哪个?
  • RDS-Mysql 物理备份恢复到本地数据库上
  • 阿里云服务器如何修改远程端口?
  • 好程序员web前端教程分享CSS不同元素margin的计算 ...
  • ​LeetCode解法汇总2808. 使循环数组所有元素相等的最少秒数
  • ​云纳万物 · 数皆有言|2021 七牛云战略发布会启幕,邀您赴约
  • # windows 安装 mysql 显示 no packages found 解决方法
  • (003)SlickEdit Unity的补全
  • (20)docke容器
  • (C语言)输入自定义个数的整数,打印出最大值和最小值
  • (Mac上)使用Python进行matplotlib 画图时,中文显示不出来
  • (vue)页面文件上传获取:action地址
  • (附源码)springboot优课在线教学系统 毕业设计 081251
  • (算法)Travel Information Center
  • (一) storm的集群安装与配置
  • (一)Mocha源码阅读: 项目结构及命令行启动
  • (一)使用Mybatis实现在student数据库中插入一个学生信息
  • (转)linux下的时间函数使用
  • ***监测系统的构建(chkrootkit )
  • .NET Core引入性能分析引导优化
  • .NET delegate 委托 、 Event 事件