显式指定mysql查询的排序顺序?
Posted
技术标签:
【中文标题】显式指定mysql查询的排序顺序?【英文标题】:Explicitly specify sort order for mysql query? 【发布时间】:2011-10-18 05:49:49 【问题描述】:如果我有:
ID | Title
1 | Shirt
2 | CD
3 | Cap
4 | Mp3
5 | Badge
如果我想按这个顺序排序:4、2、5、3,1。有没有办法在你明确指定的地方进行 sql 查询?比如:
select * from TABLE order by ID(4,2,5,3,1) ??
【问题讨论】:
您如何引入一个“位置”列并按照您想要的方式对项目进行排序并查询按位置排序的行?依靠 ID 来订购东西真是……愚蠢。 【参考方案1】:实际上,你们的关系出奇地接近。很简单:
select * from TABLE order by field(ID,4,2,5,3,1)
【讨论】:
很好,这是 mysql 特有的吗? @muistooshort 是的 - 它更像是 mysql “放克”,但所有“不符合标准”的东西都非常方便,难以抗拒!【参考方案2】:您可以将 ORDER BY 中的 CASE 用作基本的查找表:
select *
from your_table
order by
case id
when 4 then 1
when 2 then 2
when 5 then 3
when 3 then 4
when 1 then 5
end
【讨论】:
伟大的行。很有用【参考方案3】:select * from TABLE order by ID=1,ID=3,ID=5,ID=2,ID=4;
您运行此程序并让我知道您的疑问。
【讨论】:
以上是关于显式指定mysql查询的排序顺序?的主要内容,如果未能解决你的问题,请参考以下文章
Mysql中ORDER BY 排序怎么使用?指定顺序和多字段排列
MySQL 基础 SQL -- DQL 数据查询语言(基础查询(字段别名) where条件查询(比较运算符逻辑运算符) 聚合函数分组查询 排序查询分页查询DQL语句执行顺序)