千家信息网

怎样解决5.5版本升级5.7.23SQL不兼容的问题

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,怎样解决5.5版本升级5.7.23SQL不兼容的问题,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。从5.5升级到5.7.23,反馈该SQ
千家信息网最后更新 2026年11月03日怎样解决5.5版本升级5.7.23SQL不兼容的问题

怎样解决5.5版本升级5.7.23SQL不兼容的问题,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

从5.5升级到5.7.23,反馈该SQL在两个版本执行结果不一样(5.5的返回结果30条,而5.7.23返回57条)。

SELECT * from k_xxx where sequence>0 AND starttime<='2019-03-28 18:26:06' and  id in (SELECT b.id FROM (SELECT * FROM k_xxx as a WHERE a.status=1 AND a.sequence>0 AND a.starttime<='2019-03-28 18:26:06' ORDER BY a.starttime DESC,a.edittime DESC) as b GROUP BY b.sequence);

分析:

1)拆分sql,理出子查询如下:
SELECT b.id FROM (SELECT * FROM k_recommend as a WHERE a.status=1 AND a.sequence>0 AND a.starttime<='2019-03-28 18:26:06' ORDER BY a.starttime DESC,a.edittime DESC) ;

发现理出的子查询在5.5跟5.7.23都是返回30条,由此发现带in的子查询可能存在差异

2)查看5.5版本跟5.7.23的执行计划

5.5版本

5.7.23版本


由上图可以得出结论,在mysql5.7.23中,将子查询优化成关联查询,在关联时丢失了对group by的处理

3)sql整改(将子查询变为关联查询)
select * from (SELECT a.* FROM k_xxx as a inner join k_xxx as b WHERE a.sequence>0 AND a.starttime<='2019-03-28 18:26:06' and  a.status=1  and a.id=b.id group by a.sequence order by a.starttime DESC,a.edittime DESC) as b order by b.sequence;

在升级mysql5.7时,可能要对业务的查询带group by/order by的子查询进行改造,方可升级

看完上述内容,你们掌握怎样解决5.5版本升级5.7.23SQL不兼容的问题的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!

查询 版本 升级 问题 关联 内容 方法 更多 结果 束手无策 为此 上图 业务 两个 原因 对此 差异 技能 由此 篇文章 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 云南咖啡 互联网佳科技有限公司 互联网科技有限公司图片 北京互联网科技有限公司 电子科技大学互联网 伴你行互联网科技有限公司 阿里互联网科技公司 重庆互联网医院沙龙医盟信息科技 坤平互联网科技 互联网科技和信息 乌鲁木齐新华智原互联网科技学校 互联网科技公司营业执照怎么办理 众安科技工业互联网合作 北京市互联网新科技 江苏苏星互联网科技有限公司 西安有哪些互联网高科技企业 互联网高科技行业有哪些企业 艺电能源互联网科技有限公司招聘 兰石爱特工业互联网科技分公司 伍佰万互联网科技是干嘛的 广州淘业互联网络科技 互联网科技行业发展 壹账通互联网科技 米客互联网科技 长亮科技 互联网金融 承德科技产业互联网发展 烟台灵鸽互联网科技有限公司 工业互联网展湾科技股份有限公司 滨湖区互联网智能科技产品有哪些 怎样加入科技互联网
0