PostgreSQL按datetime ascsorting,先是null?
我需要sorting一个date/时间字段升序PostgreSQL表,例如last_updated
。
但是,该字段允许为空或空,我希望last_updated
有null的logging在last_updated
之前 。
这可能吗?
order by last_updated asc /* and null last_updated records first ?? */
PostgreSQL提供NULLS FIRST | LAST
ORDER BY
子句的NULLS FIRST | LAST
关键字来满足需要:
ORDER BY last_updated NULLS FIRST
一个典型的用例是降序sorting( DESC
),它将首先使用空值完全反转默认升序( ASC
)。 往往不可取 – 因此,保持空位最后:
ORDER BY last_updated DESC NULLS LAST
您可以使用CASE语句创build自定义的ORDER BY。
CASE语句会检查您的条件,并将满足条件的行分配给比分配给不符合条件的行更低的值。
给出一个例子可能是最容易理解的:
SELECT last_updated FROM your_table ORDER BY CASE WHEN last_updated IS NULL THEN 0 ELSE 1 END, last_updated ASC;