nulls last和null first

Posted 月图灵

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nulls last和null first相关的知识,希望对你有一定的参考价值。

默认情况下,执行器认为Null值要大于所有值,所以,简单的如 dt_qzsj desc降序排序会把所有的null排在最前面,dt_qzsj asc会将null排在最后面。
某些情况下使用dt_qzsj desc需要将null值放到最后,如下:

explain analyze
SELECT
qzsq.c_id sqId,
...
FROM
ywst.t_qzsq qzsq
LEFT JOIN ywst.t_qzst_ws ws ON qzsq.c_id_ws = ws.c_id
LEFT JOIN ywst.t_qzst_aj aj ON qzsq.c_id_aj = aj.c_id
WHERE
qzsq.n_qzzt = 4
ORDER BY dt_qzsj DESC LIMIT 10 OFFSET 0

创建了索引create index i_t_qzsq_dt_qzsj on ywst.t_qzsq(dt_qzsj desc last);

虽然创建了索引,但是并没有走索引,需要在sql中也加入nulls last才行,正确的写法:ORDER BY dt_qzsj DESC nulls last LIMIT 10 OFFSET 0

以上是关于nulls last和null first的主要内容,如果未能解决你的问题,请参考以下文章

Oracle 排序中使用nulls first 或者nulls last 语法

LAST_VALUE、CURRENT ROW 和 NULL 的意外结果

mybatis使用oracle的nulls first/nulls last

Pyspark orderBy asc nulls last

如何在 MySQL 排序中控制 nulls-first 或 nulls-last?

DB2NULLS LAST与NULLS FIRST