使用OrientDB 2.1.2,我试图使用固有的COALESCE功能并遇到一些奇怪的结果。
目标:根据特定条件选择属性的最大值,如果在给定条件的情况下该属性没有值,则选择0。
这是我尝试用来制作结果的内容。
尝试1:只根据某些条件选择属性的最大值 - 这就像我预期的那样......单个结果
尝试2:与以前相同的查询但现在我添加了一个额外的条件,我知道这将导致没有返回结果 - 这也像我预期的那样工作...没有找到结果
尝试3:如果第二个查询的结果没有返回结果,则使用COALESCE选择0 - 这是查询失败的地方(见下文)。
我希望第二个查询的结果不返回任何结果,从而有资格作为" NULL"结果意味着COALESCE函数应该继续返回0.相反,COALESCE函数看到内部选择的结果(再次,不返回结果)作为有效的非空值,导致COALESCE函数永远不会返回预期的" 0"值。
熟悉使用OrientDB API的人有两个问题:
答案 0 :(得分:1)
请尝试:
select coalesce($a, 0) from ... let $a = (subquery) where ...
或者也就是这个变体因为子选择返回结果集,但是合并需要一个值:
select coalesce($a[0], 0) from ... let $a = (subquery) where ...