MySQL ORDER BY 从前到后发送

MySQL ORDER BY Send first to last

我设法使用 this trick 正确排序了我的列表,使用 UNSIGNED 变量但输出有一个问题,它将唯一以字母开头的条目放在数字条目之前。 (按字符串排序)

我当前使用此 SQL 语句 ORDER BY CAST(reason AS UNSIGNED), reason(其中 "reason" 是字符串)的输出是

未知原因
1- blablabla
2- blebleble
3- 比比比利
4- 斑斑斑斑
5- 布鲁布鲁布鲁
6- blyblybly

我希望 "Unknown reason" 是唯一不以数字开头的字符串位于底部,因此将收到的第一个结果扔到列表底部。

您可以将多个键添加到 order by,包括表达式:

order by (left(reason, 1) between '0' and '9') desc,
         reason

当条件以数字开头时,第一个条件的计算结果为真,这被视为 1 并将移至顶部。剩下的原因就水落石出了