怎么在 mySQL 中定义自定义 ORDER BY 顺序

本教程将介绍如何在 mySQL 中定义自定义 ORDER BY 顺序的处理方法,这篇教程是从别的地方看到的,然后加了一些国外程序员的疑问与解答,希望能对你有所帮助,好了,下面开始学习吧。

怎么在 mySQL 中定义自定义 ORDER BY 顺序 教程 第1张

问题描述

在 MySQL 中,我怎么定义自定义排序顺序.

为了解释我想要什么考虑这张表:

ID  Language Text
0ENUa
0JPNb
0DANc 
1ENUd
1JPNe
1DANf
2etc...

这里我想返回按语言和升序 ID 排序的所有行,以便首先出现 Language = ENU,然后是 JPN,最后是 DAN.

结果应该是:a,d,b,e,c,f 等

这可能吗?

推荐答案

MySQL 有一个方便的函数,叫做 FIELD() 非常适合这样的任务.

ORDER BY FIELD(Language,'ENU','JPN','DAN'), ID

但请注意,

    它会降低 SQL 的可移植性,因为其他 DBMS 可能没有这样的功能

    It makes your SQL less portable, as other DBMSs might not have such function

当您的语言列表(或其他排序依据)变得更长时,最好有一个单独的表,其中包含 sortorder 列,并将其连接到您的查询以进行排序.

好了关于怎么在 mySQL 中定义自定义 ORDER BY 顺序的教程就到这里就结束了,希望趣模板源码网找到的这篇技术文章能帮助到大家,更多技术教程可以在站内搜索。