一尘不染

使零出现在升序数列表的最后

sql

我在Android应用程序中使用SQLite。
在我所有的表中,我都有一个默认行,该行的索引为0,其中包含该表的默认值。
在大多数情况下,每个字段的默认数字为0,这是最适合使用的数字。
但是,当我使用ORDER BY语句对数据进行排序时,我希望将所有零值字段放在列表的末尾,因为它们通常为空并使用默认信息。
在where语句中排除这些字段是不可接受的,因为我试图对信息进行排序,而不是对其进行过滤。

这是我到目前为止的内容:

select distinct item.name, epoch_date.epoch
from epoch_date, time
where (time.begin_date_id = epoch_date._id)
and (item.time_id = time._id)
order by epoch_date.epoch;

在我的沙盒数据库中,返回的内容如下:

"item 1", 0
"item 2", 0
"item 4", 0
.
.
.
"item 3",  1275350400
"item 42", 1275472800
"item 12", 1275472800

但是我想要的是:

"item 3",  1275350400
"item 42", 1275472800
"item 12", 1275476400
.
.
.
"item 1", 0
"item 2", 0
"item 4", 0

阅读 143

收藏
2021-03-10

共1个答案

一尘不染

CASE声明建议等效,但更简短:

 ORDER BY epoch_date.epoch == 0, epoch_date.epoch
2021-03-10