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。有處理這些類型的查詢的最佳做法嗎? –