mysql - 按大于 0 的字段排序
问题描述
假设我的数据库中有这些行:
1
0
5
2
0
3
3
5
0
5
我想对我的字段进行排序,我需要先返回值不为零的字段,当值为零时,排序的行应该如下所示
1
5
2
3
3
5
5
0
0
0
我不想按数字排序,我想最后显示 0 个值,
我有这段代码,但它按数字对它们进行排序:
ORDER BY cASE WHEN num_mojud = 0 THEN num_mojud END ASC,CASE WHEN num_mojud > 0 THEN num_mojud END ASC
or
ORDER BY IF (num_mojud = 0, 9999999, num_mojud )
我该怎么做?
解决方案
在 MySQL 中,您可以使用两个键进行排序。请注意,SQL 表表示无序集。因此,天真地,您可以通过按值排序将零放在第一位(假设值是非负数):
order by num_mojud
这似乎没有做你想要的。您可以通过执行以下操作将零放在第一位,然后以任意顺序放置其余部分:
order by (num_mojud = 0) desc
MySQL 将布尔值视为数字,“1”代表真,“0”代表假。因此,desc
按键排序。
您可以通过执行以下操作以随机顺序将零放在首位:
order by (num_mojud = 0) desc, rand()
如果您有一个具有您想要的顺序的列,您可以将零放在第一位并保留其余部分的顺序:
order by (num_mojud = 0) desc, id
推荐阅读
- javascript - 使用动态模式验证时,响应式表单始终无效
- rasa - 如何以 rasa 形式启动 rasa 动作
- php - 如果我为已在购物车中的产品单击“添加到购物车”按钮,如何重定向到购物车页面
- reactjs - 无法使用 Redux 加载数据
- amazon-dynamodb - DynamoDB 建模问题:玩家 1 和玩家 2 之间的游戏表,如何获取涉及给定玩家的所有游戏
- selenium - 如何在铬的内部页面上获取/与 element_locator 交互
- javascript - 扫描网站以查找重复的关键字并创建一个数组
- php - 如何创建正则表达式以将字符串完全拆分为 3 部分?(PHP)
- docker - dotnet core 2.1 aspnetcore_environment 通过 docker 更改不工作
- laravel - 如何短路 Laravel 查询