具有意外结果的 OrientDB COALESCE 函数

OrientDB COALESCE Function With Unexpected Results

使用 OrientDB 2.1.2,我试图将固有的 COALESCE 功能和 运行 用于一些 st运行ge 结果。

目标:select 属性 基于特定条件的最大值,如果在给定条件下 属性 没有值,则为 0。

这是我尝试用来生成结果的内容。

尝试 1:仅 select 根据某些条件计算 属性 的最大值 - 这如我所料...一个结果

尝试 2:与以前相同的查询,但现在我添加了一个额外的条件,我知道该条件不会导致 returned - 这也按我预期的那样工作...没有找到结果

尝试 3:如果第二个查询的结果 return 没有结果,则使用 COALESCE select 0 - 这是查询失败的地方(见下文)。

我希望第二个查询的结果 return 没有结果,因此符合 "NULL" 结果的条件,这意味着 COALESCE 函数应该继续 return 0。相反,COALESCE 函数将内部 select 的结果(同样,return 没有结果)视为有效的非空值,导致 COALESCE 函数永远不会 return 预期的“0”值。

两个问题给熟悉使用OrientDB的人API:

  1. 您认为此功能是否正常工作,或者是否应该向 orientdb 问题跟踪器提交问题?
  2. 是否有另一种方法可以在不使用 COALESCE 或以不同方式使用 COALESCE 的情况下实现我的目标?

不如试试:

select coalesce($a, 0) from ... let $a = (subquery) where ...

或者也是这个变体,因为分selectreturns一个结果集,但是合并想要一个单值:

select coalesce($a[0], 0) from ... let $a = (subquery) where ...