2015-02-09 44 views
1

如果有人能向我解釋下面三個查詢和爲什麼只有最後一個有效的區別,我將不勝感激。什麼時候使用expand()和/或子選擇

select out() from #1:0 where @class instanceof 'BaseClass' 
select expand(out()) from #1:0 where @class instanceof 'BaseClass' 
select from (select expand(out()) from #1:0) where @class instanceof 'BaseClass' 

非常感謝您的幫助!

回答

5

因爲where條件在前兩種情況下沒有得到很好的應用。 第一個out()只返回記錄ID的集合, 第二個數組在文檔集合中展開和轉換,但我認爲在展開前應用了where條件,所以像case 1不起作用。

如果您不想使用子查詢,你總是可以做

select expand(out()[ @class = 'BaseClass']) from #1:0 
相關問題