【发布时间】:2014-03-20 10:50:03
【问题描述】:
我有一个带有可选排序字段的 PostgreSQL 项目表:
CREATE TABLE tasks (
id integer PRIMARY KEY DEFAULT nextval('f_seq'),
f_id integer REFERENCES fixins,
name text NOT NULL,
sort integer
);
我希望没有sort 值的任务排在所有其他任务之后,但有一个例外:如果sort = -1 我希望它排在那些之后。因此,例如,给定这些值:
id | f_id | name | sort
---+------+----------+-------
1 | 1 | zeta | -1
2 | 1 | alpha | 1
3 | 1 | gamma | 3
4 | 1 | beta | 2
5 | 1 | delta |
6 | 1 | epsilon |
我希望它们排序为:alpha、beta、gamma、delta、epsilon、zeta。
我知道我可以使用ORDER BY COALESCE(sort,99999) 在非空值之后排序空值,但我怎样才能让特殊的-1 值出现在它们之后?
【问题讨论】:
-
试试
order by coalesce(order, 0) -
呃,对不起,误读了这个问题。
标签: sql postgresql sorting null sql-order-by