还有MySQL
FIELD函数。
如果要对所有可能的值进行完整排序:
SELECt id, name, priorityFROM mytableORDER BY FIELD(name, "core", "board", "other")
如果您只关心“核心”在前,而其他值则无关紧要:
SELECt id, name, priorityFROM mytableORDER BY FIELD(name, "core") DESC
如果要先按“核心”排序,然后按正常排序顺序按其他字段排序:
SELECt id, name, priorityFROM mytableORDER BY FIELD(name, "core") DESC, priority
不过,这里有一些警告:
首先,我很确定这是仅mysql的功能-问题被标记为mysql,但您永远不会知道。
其次,注意其
FIELD()工作原理:它返回值的从 一开始的索引 -在的情况下
FIELD(priority, "core"),如果“
core”是值,则返回1。如果该字段的值不在列表中,则返回 零 。这就是为什么
DESC除非您指定所有可能的值,否则是必需的。



