我需要按日期/时间字段(例如)升序对PostgreSQL表进行排序last_updated。
但是,该字段允许为空或空,我想与空记录last_updated来之前,非空last_updated。 这可能吗?
last_updated来
last_updated
order by last_updated asc -- and null last_updated records first ??
PostgresNULLS FIRST | LAST为该ORDER BY子句提供了关键字,以完全满足该需求:
PostgresNULLS FIRST | LAST
... ORDER BY last_updated NULLS FIRST
一个典型的用例是使用降序排序(DESC),它会生成默认的升序(ASC)的完整反转,首先是空值。通常不理想-因此,将null值保持在最后:
... ORDER BY last_updated DESC NULLS LAST
要支持带有索引的查询,请使其匹配:
CREATE INDEX foo_idx ON tbl (last_updated DESC NULLS LAST);
Postgres可以向后读取btree索引,但是在附加NULL值的地方很重要。