Previously (MySQL 5.7 and lower), GROUP BY sorted implicitly under certain conditions. In MySQL 8.0, that no longer occurs, so specifying ORDER BY NULL at the end to suppress implicit sorting (as was done previously) is no longer necessary. However, query results may differ from previous MySQL versions. To produce a given sort order, provide an ORDER BY clause.
google翻译:以前(MySQL 5.7及更低版本),GROUP BY在某些条件下隐式排序。 在MySQL 8.0中,不再发生这种情况,因此不再需要在末尾指定ORDER BY NULL来抑制隐式排序(如前所述)。 但是,查询结果可能与以前的MySQL版本不同。 要产生给定的排序顺序,请提供ORDER BY子句
陈哈哈:“哦,这么看来开发老版本的同事是没用Order by,直接用了隐式排序。年轻人,不讲武德啊!!”
小王(小声):“哈哥,这模块之前好像是你负责的。”
陈哈哈(老脸一红):???
陈哈哈:“咳咳,这MySQL8.0团队不讲武德,给我挖坑!”

好了,接下来我们用测试数据演示一下
下面是表T测试数据,无序
mysql> SELECT pid,appName from T;
+--------+-------------------------+
| pid

MySQL 8.0不再支持GROUP BY隐式排序,可能导致查询结果与旧版本不同。隐式排序源于优化器选择先排序后分组以提高效率,但在升级到MySQL 8时需注意此变化。使用ORDER BY确保排序顺序,无索引时,MySQL可能使用临时表排序。
最低0.47元/天 解锁文章

161

被折叠的 条评论
为什么被折叠?



