php - MySQL order-by 原始 "where order"

标签 php mysql sql-order-by

我有一个无法破解的排序问题。我这样从我的表中选择:

SELECT * FROM 'sidemodules' WHERE name = 'module1' OR name = 'module2' OR 'name3'

这会返回我想要的模块。但是模块位于表中,按以下顺序说:

  1. 模块 3
  2. 模块 1
  3. 模块 2

然后它们按此顺序返回给我。如何让它们按WHERE 子句 (1,2,3) 中的顺序显示?

最佳答案

我认为您正在寻找 FIELD :

SELECT * FROM sidemodules
WHERE name IN ('module1', 'module2', 'name3')
ORDER BY FIELD(name, 'module1', 'module2', 'name3')

无论如何,如果名称按字母顺序排列,只需使用:

ORDER BY name

另请注意,使用 IN 运算符通常比仅使用许多 OR 更快。​​

关于php - MySQL order-by 原始 "where order",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10164157/

相关文章:

mysql - 使用 MySQL 从数据库中删除重复项

mysql - SQL SERVER 2012 如果存在和如果不存在

mysql - 复杂的mysql搜索查询, 'boolean and'在mysql字符串上搜索关键字

mysql - 如何在ORDER BY中使用CASE函数?

mysql - 使用 ORDER BY 和 LIMIT MYSQL 更新多个不同的表

sql-order-by - Dapper订购者

php - Laravel Controller - 在另一个函数中调用函数

php - 在 PHP 中使用 substr_count() 和数组

php - 注册表单无法将数据写入数据库

php - 来自 PHP 的 XMLHttpRequestProgressEvent 操作