我在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
与CASE声明建议等效,但更简短:
CASE
ORDER BY epoch_date.epoch == 0, epoch_date.epoch