mysql如何按用户定义的顺序/排序排序
说要一张 table
---------+----------
name | category
---------+----------
apple | 0
orange | 0
book | 1
notebook | 1
textboo | 1
phone | 2
如何按照以下类别顺序对其进行排序,即类别=1,类别=0,类别=2 获得 View 为
---------+----------
name | category
---------+----------
book | 1
notebook | 1
textbook | 1
apple | 0
orange | 0
phone | 2
我们如何为此编写 sql?
如果语句可以根据每个类别上的项目数识别和排序 desc,则更好。
最佳答案
你想这样做:
SELECT Name, Category
FROM MyTable
ORDER BY
Case category
when 1 then 1
when 0 then 2
else 3
end,
Name
更新
在第一个答案中,顺序是按类别固定的。当按类别中的项目数量排序时,您需要这样做:
select name, Category,
(select count(*) from MyTable mt2 where mt2.Category = mt1.category) CatCount
from MyTable mt1
order by 3 DESC, name
关于mysql如何按用户定义的顺序排序/按字段上的项目数排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6345377/