显式指定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常见优化

mysql常见优化

MySQL ORDER BY:对查询结果进行排序

Mysql中ORDER BY 排序怎么使用?指定顺序和多字段排列

Mysql数据查询in的时候如何排序

MySQL 基础 SQL -- DQL 数据查询语言(基础查询(字段别名) where条件查询(比较运算符逻辑运算符) 聚合函数分组查询 排序查询分页查询DQL语句执行顺序)