如何解决mysql如何根据用户定义的顺序/字段上的项目数排序
| mysql如何按用户定义的顺序/顺序排序 说一桌---------+----------
name | category
---------+----------
apple | 0
orange | 0
book | 1
notebook | 1
textboo | 1
phone | 2
如何按以下类别顺序进行排序,即类别= 1,类别= 0,类别= 2
得到的看法
---------+----------
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
, 如果要按类别中的条目数进行排序,可以执行以下操作:
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
, 如果在编写查询时知道顺序,则可以使用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 = 2
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。