3 回答

TA貢獻(xiàn)1785條經(jīng)驗 獲得超4個贊
還有MySQL FIELD功能。
如果要對所有可能的值進(jìn)行完整排序:
SELECT id, name, priority
FROM mytable
ORDER BY FIELD(name, "core", "board", "other")
如果您只關(guān)心“核心”是第一個而其他值無關(guān)緊要:
SELECT id, name, priority
FROM mytable
ORDER BY FIELD(name, "core") DESC
如果要先按“核心”排序,則按正常排序順序排序其他字段:
SELECT id, name, priority
FROM mytable
ORDER BY FIELD(name, "core") DESC, priority
不過,這里有一些警告:
首先,我很確定這只是mysql-only功能 - 問題是標(biāo)記為mysql,但你永遠(yuǎn)不知道。
其次,注意如何FIELD()工作:它返回值的從一開始的索引 - 在這種情況下FIELD(priority, "core"),如果“core”是值,它將返回1。如果字段的值不在列表中,則返回零。DESC除非您指定所有可能的值,否則這是必要的原因。

TA貢獻(xiàn)1865條經(jīng)驗 獲得超7個贊
一般來說你可以做到
select * from your_table
order by case when name = 'core' then 1 else 2 end,
priority
特別是在MySQL中你也可以這樣做
select * from your_table
order by name <> 'core',
priority
由于MySQL中的比較的結(jié)果是要么 0或者1,您可以通過該結(jié)果進(jìn)行排序。
添加回答
舉報