对查询进行降序或升序排序时,什么时候您会首先需要 NULL?
在我看来,“绝大多数”时间,无论是升序排序还是降序排序,所需的行为都是 NULLS LAST。相反,我们应该首先指定 NULL。
ASCENDING
) NULL 值出现在
last。 逻辑表明,排序顺序应使用
DESCENDING
关键字来反转,因此在这种情况下,空值会出现
first。 但是您可以选择您想要的方式。参见:
NULLS FIRST | LAST
子句。
NULLS LAST
,则空值将在所有非空值之后排序 价值观;如果指定了
,则空值排序在所有值之前 非空值。如果两者均未指定,则默认行为是 当指定或隐含NULLS FIRST
时,NULLS LAST
ASC
,当NULLS FIRST
时,DESC
已指定(因此,默认情况下表现为空值更大 比非空值)。当指定时,默认空排序 取决于运算符是小于还是大于运算符。USING
我的粗体强调。
答案很简单,因为这就是编写 Postgres 的人的设计方式。
引用空值的排序高于任何其他值。换句话说,按升序排序,空值排序在末尾,按降序排序,空值排序在开头。
这假设您已指定 ORDER BY 子句,如果未指定,则随机返回行。如果指定了 ORDER BY 子句,则返回的行按照指定的顺序排序。如果未给出 ORDER BY,则按系统认为最快生成的顺序返回行。