2014-07-17 53 views
0

我創建了一個名爲TestEntity: {id: integer,ts: datetime}非常簡單的類,並插入一些記錄:OrientDB:如何從組中獲取ID?

從TestEntity

@rid @version @class ts id 

\#12:0 1 TestEntity 2014-07-17 12:47:35 0 

\#12:1 2 TestEntity 2014-07-17 12:48:33 0 

\#12:2 1 TestEntity 2014-07-16 12:49:06 0 

\#12:3 1 TestEntity 2014-07-17 12:49:34 1 

\#12:4 1 TestEntity 2014-07-15 12:49:59 1 

When I try to do aggregation query with group by "**select max(ts),@rid from TestEntity group by id**" I see the following result: 

\#-2:1 0 #12:2 2014-07-17 12:48:33 

\#-2:4 0 #12:4 2014-07-17 12:49:34 

選擇它找到正確的最後日期(min(ts)同一作品)。但@rid不正確。而且,令人驚訝,與最小另一個查詢給出了相同的RID:12:2,12:4:

選擇分鐘(TS),@從TestEntity組由ID

\#-2:1 0 \#12:2 2014-07-16 12:49:06 

\#-2:4 0 \#12:4 2014-07-15 12:49:59 
擺脫

我的問題是,我究竟做錯了什麼?我需要做的是按整數對文檔進行分組id(可以有重複項)並找到每個文檔的最新日期,並獲取每個文檔的文檔ID(@rid)?

回答

0

經過一番調查後,我嘗試了兩種其他變種:

從ID從

@rid @version @class id ts 
#12:3 1 TestEntity 1 2014-07-17 12:49:34 
#12:1 2 TestEntity 0 2014-07-17 12:48:33 

選擇(通過TS ASC選擇TestEntity順序)組選擇(從TestEntity爲了通過TS遞減選擇)通過編號

@rid @version @class id ts 
#12:4 1 TestEntity 1 2014-07-15 12:49:59 
#12:2 1 TestEntity 0 2014-07-16 12:49:06 

他們給我正確的結果。我想我需要用更大的數據集進行測試。

0

試試這個:

select min(ts),@rid from (select from TestEntity order by ts) group by id 

這樣你申請你對一個有序的結果集。

+0

您是否嘗試過執行此查詢?它給完全不正確的結果。只有一條線,實際上是: #-2:0 \t 0#\t 12:3 \t 2014年7月15日12時49分59秒 而即使在這條線@rid不匹配的TS。 :( – pkozlov