猿问

首先按特定字段值排序

我有一个有3列的表:


id | name | priority

--------------------

 1 | core  |   10

 2 | core  |   9

 3 | other |   8

 4 | board |   7

 5 | board |   6

 6 | core  |   4

我想使用,priority但首先是那些name=core即使具有较低优先级的行也可以对结果集进行排序。结果应该是这样的


id | name | priority

--------------------

 6 | core  |   4

 2 | core  |   9

 1 | core  |   10

 5 | board |   6

 4 | board |   7

 3 | other |   8


一只萌萌小番薯
浏览 503回答 3
3回答

九州编程

还有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-only功能 - 问题是标记为mysql,但你永远不知道。其次,注意如何FIELD()工作:它返回值的从一开始的索引 - 在这种情况下FIELD(priority, "core"),如果“core”是值,它将返回1。如果字段的值不在列表中,则返回零。DESC除非您指定所有可能的值,否则这是必要的原因。

莫回无

一般来说你可以做到select * from your_tableorder by case when name = 'core' then 1 else 2 end,&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;priority&nbsp;特别是在MySQL中你也可以这样做select * from your_tableorder by name <> 'core',&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;priority&nbsp;由于MySQL中的比较的结果是要么&nbsp; 0或者1,您可以通过该结果进行排序。
随时随地看视频慕课网APP

相关分类

MySQL
我要回答