MySQL ORDER BY 从头到尾发送

标签 mysql sql list sql-order-by

我成功地使用 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/

相关文章:

list - 编写基本的 haskell 函数,获取 Int x 并在 [1..x] 上执行函数

java - 无法在选择查询中使用 session 数据

php - 数据库设计: best practice for designing a forum table

mysql - Sql 查询在某些情况下返回可疑值的两倍,而在其他情况下返回正确值

mysql - 统计付费用户的不同数量

python - Pandas:使用一系列进行列表查找

list - Sencha Touch - 动态设置商店代理 url 并在列表项点击时加载商店

php - 如何在数据库中存储为哈希创建的盐?

mysql - MS Access 2003 年公司报告

MySQL:为什么我的索引长度是 0.0 字节?