为了账号安全,请及时绑定邮箱和手机立即绑定

PostgreSQL按DateTime ASC排序,首先为NULL?

PostgreSQL按DateTime ASC排序,首先为NULL?

长风秋雁 2019-06-17 14:42:16
PostgreSQL按DateTime ASC排序,首先为NULL?我需要按日期/时间字段对PostgreSQL表进行排序。last_updated.但是允许该字段为空或空,我希望记录中包含空。last_updated来以前非零last_updated.这个是可能的吗?order by last_updated asc /* and null last_updated records first ?? */
查看完整描述

2 回答

?
素胚勾勒不出你

TA贡献1827条经验 获得超9个赞

Postgres提供NULLS FIRST | LAST关键字ORDER BY为满足这一需要而制定的条款如下:

... ORDER BY last_updated NULLS FIRST

典型用例具有降序排序(DESC),这将产生默认升序的完全反转(ASC),首先使用空值。因此,保留空值通常是不可取的:

... ORDER BY last_updated DESC NULLS LAST

控件支持查询。指数,使之匹配:

CREATE INDEX foo_idx ON tbl (last_updated DESC NULLS LAST);

Postgres可以向后读取btree索引,但在哪里追加NULL值很重要。


查看完整回答
反对 回复 2019-06-17
?
炎炎设计

TA贡献1808条经验 获得超4个赞

可以使用case语句创建自定义顺序。
case语句检查您的条件,并为满足该条件的行分配值低于分配给不满足条件的行的值。
举个例子,这可能是最容易理解的:

  SELECT last_updated 
    FROM your_table 
ORDER BY CASE WHEN last_updated IS NULL THEN 0 ELSE 1 END, 
         last_updated ASC;


查看完整回答
反对 回复 2019-06-17
  • 2 回答
  • 0 关注
  • 978 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信