mysql中的order by 带limit与不带limit结果是不一样的。

mysql> select table_name from tables order by table_rows;
+------------------------------------------------------+
| table_name                                           |
+------------------------------------------------------+
| x$wait_classes_global_by_avg_latency                 |
| x$wait_classes_global_by_latency                     |
| x$waits_by_host_by_latency                           |
| x$waits_by_user_by_latency                           |
| x$waits_global_by_latency                            |
| CHARACTER_SETS                                       |
| COLLATIONS                                           |
| COLLATION_CHARACTER_SET_APPLICABILITY                |
| COLUMNS                                              |
| COLUMN_PRIVILEGES                                    |
| ENGINES                                              |
mysql> select table_name from tables order by table_rows limit 5;
+---------------------------------------+
| table_name                            |
+---------------------------------------+
| CHARACTER_SETS                        |
| COLLATIONS                            |
| COLLATION_CHARACTER_SET_APPLICABILITY |
| COLUMNS                               |
| COLUMN_PRIVILEGES                     |
+---------------------------------------+
5 rows in set (1.87 sec)

如果需要加limit与不带limit的顺序保持一致,需要
select table_name from tables order by table_rows,table_name limit 5;这种方式。
如果ORDER BY列中的多个行具有相同的值,则服务器可以按任何顺序自由返回这些行,并且可能会根据整体执行计划的不同而不同。 换句话说,这些行的排序顺序相对于无序列是不确定的。
https://dev.mysql.com/doc/refman/8.0/en/limit-optimization.html