在 SurrealDB 中 SELECT 时如何对 NULL/NONE 进行最后排序?

问题描述 投票:0回答:2

我现在几乎所有事情都使用 SurrealDB 作为我的首选数据库——它实在是太强大了。
今天,我遇到了一个小问题:在将其作为第 3 方框架的一部分实现为数据存储时,我需要按字段对输出进行升序排序,NULL 和 NONE 最后排序。

当我在 SurrealDB 的 SQL REPL 中运行

SELECT * FROM Table ORDER field ASC;
时,我得到类似这样的信息:

[
        {
                field: NULL,
                id: Table:mzg9su37s8l1rwjpgu47
        },
        {
                field: 1,
                id: Table:dy6e1uwbrobzuq5rtm9k
        },
        {
                field: 2,
                id: Table:cn93fh6qtn1wo5dmuoeu
        }
]

NULL 出现在最前面,而不是最后。我浏览了 SELECT 语句的文档页面,但没有找到任何内容。 如果所有其他方法都失败了——作为一个希望的临时解决方案——我可以运行两个查询——一个用于获取非 NULL,一个用于 NULL——背靠背,然后在后端连接它们的结果.

surrealdb
2个回答
0
投票

根据此处显示的排序顺序,目前您似乎无法将 NULL 和 NONE 最后排序。

但是,您可以尝试使用 union 链接查询,如下所示。请记住将“tbl”替换为您的表名。

RETURN array::union(
    (SELECT * FROM tbl WHERE field!=null ORDER field ASC),
    (SELECT * FROM tbl WHERE field=null)
)

希望这有帮助!


0
投票

您可以使用空检查作为第一个排序标准,如下所示:

select 
    *, 
    field == null as field_is_null
from test
order 
    field_is_null,
    field asc;
© www.soinside.com 2019 - 2024. All rights reserved.