我需要帮助。
我有一张有下一个数据的表
|---id---|-----name-----|--value--|
| 1 | Alex | 300 |
| 2 | John | 800 |
| 3 | Mary | 0 |
| 4 | Carl | 100 |
| 5 | Jesus | 0 |
| 6 | Aron | 0 |
点菜 value
,我正在使用:
SELECT * FROM table ORDER_BY value DESC;
但有时我会得到这样的结果:
|---id---|-----name-----|--value--|
| 2 | John | 800 |
| 1 | Alex | 300 |
| 4 | Carl | 100 |
| 5 | Jesus | 0 |
| 3 | Mary | 0 | -- !
| 6 | Aron | 0 |
我想用一个条件对表进行排序:“if value is not 0 order by value and if value is 0 order by id”来获得:
|---id---|-----name-----|--value--|
| 2 | John | 800 |
| 1 | Alex | 300 |
| 4 | Carl | 100 |
| 3 | Mary | 0 |
| 5 | Jesus | 0 |
| 6 | Aron | 0 |
我该怎么做?
4条答案
按热度按时间niwlg2el1#
如果没有负值(如示例数据中所示),则在
id
足够了:bnlyeluc2#
您可以按布尔值排序
这会给你所需要的
…玩三个方向的游戏,你可以随心所欲地重新排序
ddarikpa3#
你自己决定要不要加
DESC
在结束时,命令id取消分区。fcwjkofz4#
问题中没有任何一条说价值不能是负的,或者
NULL
. 不依赖0
最后排序:这也是可能的
NULL
最后一个值。这些会排在第一位DESCENDING
命令(您没有指定如何处理这些文件(如果有的话)请参见:
将空值排序在所有其他值之后(特殊值除外)
按列asc排序,但先为空值?