mysql如何按用户定义的顺序/排序排序
比如说一张桌子
---------+----------
name | category
---------+----------
apple | 0
orange | 0
book | 1
notebook | 1
textboo | 1
phone | 2如何按以下类别排序,即category=1、category=0、category=2,以获得视图
---------+----------
name | category
---------+----------
book | 1
notebook | 1
textbook | 1
apple | 0
orange | 0
phone | 2我们如何为此编写一个sql?
如果语句可以根据每个类别上的项数来识别和排序desc,这也会更好。
发布于 2011-06-14 22:48:43
您想要这样做:
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发布于 2011-06-14 22:57:33
如果要按类别中的条目数进行排序,可以执行以下操作:
SELECT my_table.name, my_table.category, cats.total FROM
(SELECT category, COUNT(*) AS total FROM my_table GROUP BY category) cats
INNER JOIN my_table ON my_table.category = cats.category
ORDER BY cats.total DESC, my_table.name ASC发布于 2011-06-14 22:48:06
如果您在编写查询时知道顺序,则可以使用UNION ALL:
SELECT name, category
FROM table
WHERE category = 1
UNION ALL
SELECT name, category
FROM table
WHERE category = 0
UNION ALL
SELECT name, category
FROM table
WHERE category = 2https://stackoverflow.com/questions/6345377
复制相似问题