我成功地使用 this trick 正确排序了我的列表,使用 UNSIGNED 变量,但输出有一个问题,它将唯一以字母开头的条目放在数字条目之前。 (按字符串排序)
我当前使用此 SQL 语句的输出 ORDER BY CAST(reason AS UNSIGNED), Reason
(其中“reason”是字符串)是
Unknown reason 1- blablabla 2- blebleble 3- bliblibli 4- blobloblo 5- blublublu 6- blyblybly
我希望“未知原因”(唯一不以数字开头的字符串)位于底部,因此将收到的第一个结果扔到列表的底部。
最佳答案
您可以向排序依据添加多个键,包括表达式:
order by (left(reason, 1) between '0' and '9') desc,
reason
当条件以数字开头时,第一个条件的计算结果为 true,这被视为 1 并且将转到顶部。其余原因将归于底层。
关于MySQL ORDER BY 从头到尾发送,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28093684/