最近公司在給別的企業打了一個項目,在公司本地使用的是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之后再插入
