MySQL:LIKE 查询中的默认排序?

标签 mysql sql-like

我有一个用户的 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/

相关文章:

mysql - Like Statement 在 sequelize 中对我不起作用

SQL 通配符包含该单词且不作为另一个单词的一部分

php - 使用 MySQL 计算标记最多的标签

php - 使用 mysql_fetch_array();对于准备好的陈述

Php/sql update 仅在 cookie 是数字时有效,而不是文本时有效

mysql - 当我使用 --databases ='mydb' 指定时,innobackupex 始终备份 ibdata1

sql - 等于 (=) 与 LIKE

mysql - 如何在 "\detail1\detail2\"上应用 SQL(转义 '\')?

mysql - 如何检查字符串mysql中的确切整数值

mysql - 如何使用一个查询通过 2 个表选择数据