开发者社区> 问答> 正文

如何在MySQL中定义自定义ORDER BY顺序

在MySQL中,如何定义自定义排序顺序。

为了尝试解释我想要考虑的表,请执行以下操作:

ID Language Text 0 ENU a 0 JPN b 0 DAN c
1 ENU d 1 JPN e 1 DAN f 2 etc... 在这里,我想返回按语言和升序ID排序的所有行,以便首先出现Language = ENU,然后是JPN,最后是DAN。

结果应为:a,d,b,e,c,f等。

这有可能吗?

展开
收起
保持可爱mmm 2020-05-10 19:59:02 527 0
1 条回答
写回答
取消 提交回答
  • MySQL有一个方便的函数FIELD(),它非常适合执行此类任务。

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

    但是请注意,

    由于其他DBMS可能没有此功能,因此它使SQL的可移植性较差

    当您的语言列表(或其他要排序的值)长得多时,最好有一个带有sortorder列的单独表,然后将其加入查询中进行排序。来源:stack overflow

    2020-05-10 19:59:13
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
搭建电商项目架构连接MySQL 立即下载
搭建4层电商项目架构,实战连接MySQL 立即下载
PolarDB MySQL引擎重磅功能及产品能力盛大发布 立即下载

相关镜像