1
使用OrientDB 2.1.2,我试图使用固有的COALESCE功能,并遇到一些奇怪的结果。OrientDB COALESCE函数意外的结果
目标:根据特定条件选择属性的最大值或0如果在给定条件的情况下没有该属性的值。
这是我试图用来产生我的结果。
尝试1:只要选择基于某些条件属性的最大值 - 这个工作如我所料...一个结果
尝试2:前面一个查询相同,但现在我加入一个额外的条件,我知道不会造成任何结果返回 - 这还担任过我的预期......没有结果发现
尝试3:使用COALESCE选择0,如果从第二个查询结果返回任何结果 - 这是查询失败的地方(见下文)。
我希望从第二查询返回的结果没有结果,从而有资格成为“空”的结果意味着该COALESCE函数应该然后继续返回0,会发生什么,而不是在于COALESCE功能看到内部select的结果(它再次返回没有结果)作为有效的非空值,导致COALESCE函数永远不会返回预期的“0”值。
对于那些两个问题谁是熟悉使用OrientDB API:
- 你觉得这个功能是否工作正常或应该的问题与orientdb问题跟踪备案?
- 有没有另一种方法来实现我的目标,而不使用COALESCE或以不同的方式使用COALESCE?
感谢@Lvca我会尝试一下。我很想看到这个功能(使用合并中的子选择)自动处理,以帮助从关系数据库SQL领域转移的人员快速获取orientdb的SQL类API。它比直观地理解一个没有返回条目的子选择的处理方式不同于null!也许这可能是一个更高版本的orientdb的特性要求? –
当然,请在我们的问题跟踪器(GirHub)上打开一个新问题 – Lvca
一般来说,如何在WHERE子句中处理子查询?像...... ...从vertexClassA中选择foo,其中someField =(从vertexFieldB中选择max(someOtherField))'这些类型的查询总是失败,因为我期望子查询的结果被视为原始JSON类型,不是ResultSet。有处理这些类型的查询的最佳做法吗? –