我有一个无法破解的排序问题。我这样从我的表中选择:
SELECT * FROM 'sidemodules' WHERE name = 'module1' OR name = 'module2' OR 'name3'
这会返回我想要的模块。但是模块位于表中,按以下顺序说:
- 模块 3
- 模块 1
- 模块 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/