在具有可选排序字段的 PostgreSQL 表中,目标是按如下方式对值进行排序:
要实现这种排序行为,一种方法是使用以下 ORDER BY子句:
ORDER BY (sort IS NOT DISTINCT FROM -1), sort
此子句的操作如下:
考虑提供的示例data:
id | f_id | name | sort |
---|---|---|---|
1 | 1 | zeta | -1 |
2 | 1 | alpha | 1 |
3 | 1 | gamma | 3 |
4 | 1 | beta | 2 |
5 | 1 | delta | NULL |
6 | 1 | epsilon | NULL |
使用提供的子句,项目将按如下方式排序:
alpha, beta, gamma, delta, epsilon, zeta
初始子句的等效替代是:
ORDER BY (sort IS DISTINCT FROM -1) DESC, sort
此子句产生相同的排序行为,但使用 DESC 关键字对 (sort IS DISTINCT FROM -1) 表达式按降序排列。
以上是如何在 PostgreSQL 中对非空值升序排序,然后是空值,最后是 -1 值?的详细内容。更多信息请关注PHP中文网其他相关文章!