小编典典

按ASC列排序,但先使用NULL值?

sql

我需要按日期/时间字段(例如)升序对PostgreSQL表进行排序last_updated。

但是,该字段允许为空或空,我想与空记录last_updated来之前,非空last_updated
这可能吗?

order by last_updated asc  -- and null last_updated records first ??

阅读 404

收藏
2021-04-20

共1个答案

小编典典

PostgresNULLS FIRST | LAST为该ORDER BY子句提供了关键字,以完全满足该需求:

... 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值的地方很重要。

2021-04-20