在 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 等。
这可能吗?
MySQL 有一个方便的函数叫做FIELD() https://dev.mysql.com/doc/refman/8.0/en/string-functions.html#function_field这非常适合这样的任务。
ORDER BY FIELD(Language,'ENU','JPN','DAN'), ID
但请注意,
它使您的 SQL 的可移植性较差,因为其他 DBMS 可能没有这样的功能
当您的语言列表(或其他排序依据的值)变得更长时,最好为它们创建一个带有 sortorder 列的单独表,并将其连接到您的查询中进行排序。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)