mysql如何按用户定义的顺序排序/按字段上的项目数排序

use*_*755 2 mysql sql select sql-order-by

mysql如何按用户定义的顺序排序/排序

说一张桌子

---------+----------
name     | category
---------+----------
apple    | 0
orange   | 0
book     | 1
notebook | 1
textboo  | 1
phone    | 2
Run Code Online (Sandbox Code Playgroud)

如何按以下类别顺序排序,即category = 1,category = 0,category = 2以获取视图

---------+----------
name     | category
---------+----------
book     | 1
notebook | 1
textbook | 1
apple    | 0
orange   | 0
phone    | 2
Run Code Online (Sandbox Code Playgroud)

我们如何为此编写一个sql?

更好的是,如果语句可以根据每个类别的项目数来识别和排序desc.

Adr*_*iro 7

你想这样做:

SELECT Name, Category
FROM MyTable
ORDER BY 
    Case category
        when 1 then 1
        when 0 then 2
        else 3
    end,
    Name
Run Code Online (Sandbox Code Playgroud)

更新

在第一个答案中,订单按类别确定.按类别中的项目数排序时,您希望这样做:

select name, Category, 
       (select count(*) from MyTable mt2 where mt2.Category = mt1.category) CatCount
from MyTable mt1
order by 3 DESC, name
Run Code Online (Sandbox Code Playgroud)