首页 >数据库 >mysql教程 >如何对最后带有 NULL 的 PostgreSQL 数据进行排序(特定值除外)?

如何对最后带有 NULL 的 PostgreSQL 数据进行排序(特定值除外)?

Susan Sarandon
Susan Sarandon原创
2025-01-04 05:33:42375浏览

How to Order PostgreSQL Data with NULLs Last, Except for a Specific Value?

将 NULL 值排在所有其他值之后,特殊情况除外

在包含可选排序字段的 PostgreSQL 表中对数据进行排序时,一个常见的挑战正在处理空值。最好将具有空排序值的任务放在所有其他任务之后,但优先考虑具有特殊排序值(例如 -1)的任务。

这可以通过结合使用 COALESCE 函数和布尔运算符来实现,特别是 (IS NOT DISTINCT FROM) 运算符。以下查询演示了这种方法:

SELECT *
FROM tasks
ORDER BY (sort IS NOT DISTINCT FROM -1), sort;

工作原理:

(sort IS NOT DISTINCT FROM -1) 表达式对于除-1,计算结果为 TRUE。在 PostgreSQL 的默认排序顺序中,NULL 值放在最后,而 TRUE 的排名高于 FALSE。

通过将此表达式合并到 ORDER BY 子句中,排序值为 -1 的任务将定位在非 -1 的任务之后空排序值,而具有空排序值的任务放置在所有其他任务之后。

其他注意:

可以使用 DESC 关键字编写替代的等效查询:

SELECT *
FROM tasks
ORDER BY (sort IS DISTINCT FROM -1) DESC, sort;

以上是如何对最后带有 NULL 的 PostgreSQL 数据进行排序(特定值除外)?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn