我有一个用户的 MySQL 表,它看起来像这样(部分):
- user_id, user_name, user_password, ...
现在我想获取所有包含“foo”的用户。我使用以下查询:
SELECT user_id, user_name FROM users WHERE user_name LIKE '%foo%'
问题:当我没有任何 ORDER BY 子句时,默认情况下 LIKE 查询的结果是如何排序的?
最佳答案
如果未指定 ORDER BY
子句,则顺序不确定。
在从单个表中进行选择的简单情况下,无法使用索引(所以 (column) LIKE '%(something)'
停止在列上使用任何索引) ,结果将倾向于按表顺序排列,除非您手动重新排序表,否则结果将是它们添加到表中的顺序。
如果可以使用索引(例如,在索引列上执行类似 (column) LIKE '(something)%'
的操作),结果可能返回索引的顺序。
将连接添加到其他表会使它变得更加不确定,因为您还对用于连接条件的任何索引一时兴起。
关于MySQL:LIKE 查询中的默认排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36765565/