在 MySQL 中,我如何定义自定义排序顺序。
为了解释我想要的内容,请考虑这张表:
ID Language Text 0 ENU a 0 JPN b 0 DAN c 1 ENU d 1 JPN e 1 DAN f 2 etc...
在这里,我想返回按 Language 和升序 ID 排序的所有行,以便 Language = ENU 首先出现,然后是 JPN,最后是 DAN。
结果应该是:a,d,b,e,c,f 等。
这甚至可能吗?
MySQL 有一个方便的函数FIELD(),它非常适合这样的任务。
FIELD()
ORDER BY FIELD(Language,'ENU','JPN','DAN'), ID
但请注意,
它使您的 SQL 的可移植性降低,因为其他 DBMS 可能没有这样的功能
当您的语言列表(或其他要排序的值)变得更长时,最好有一个单独的表,其中包含它们的 sortorder 列,并将其连接到您的查询以进行排序。