mysql最新版与mysql5.6的兼容问题

最近公司在给别的企业打了一个项目,在公司本地使用的是mysql 5.6,但是搭建的项目的mysql版本是最新版5.7以后吧,所以有些sql在执行上出了一点问题

目前发现的是:

1:

在5.6版本下先order by 再group by 会取order by之后的数据的第一条,但是在5.7版本下mysql会自动优化,忽略order by 条件,直接分组查询。

解决方案:在order by 后面加上limit 1000

 例子:全部数据如下

 在5.6版本情况下在这种情况分组可以发现是分组之后排序:

在mysql5.7版本情况下排序是被直接优化忽略掉的

解决方法加上红框中任意一句话,达到预期

 

2:

5.6版本下是可以更新或者插入表数据时使用子查询 插入或者更新的,但是在5.7版本下会出现  You can't specify target table 'kq_worker' for update in FROM clause 的错误,需要在把子查询的数据再select之后再插入

原文地址:https://www.cnblogs.com/jiuhaoyun/p/10244209.html