2016-12-22 72 views
1

有包含數據的表status的Andorid-DB查詢來獲得最後一個記錄或小組第一,如果如下圖所示的最後一個記錄是重複以前

Id Status  TimeStamp 
------------------------- 
1 StatusC  1234561 
2 StatusC  1234562 
3 StatusB  1234563 
4 StatusA  1234564 
5 StatusA  1234565 
6 StatusA  1234566 

什麼查詢將返回以下結果?

Id Status  TimeStamp 
------------------------- 
4 StatusA  1234564 

又如:

Id Status  TimeStamp 
------------------------- 
1 StatusC  1234561 
2 StatusC  1234562 
3 StatusB  1234563 
4 StatusA  1234564 
5 StatusA  1234565 
6 StatusB  1234566 

結果:

Id Status  TimeStamp 
------------------------- 
6 StatusB  1234566 

所以我想最後的狀態記錄,如果它不同於前一個或者以前的最後一個是相同的狀態,然後該組的第一個。我嘗試了幾件事,但我沒有得到所需的結果。是否有任何有效的方法來實現結果?

+0

是id列的順序沒有差距? –

+0

@vkp是的,他們是 – coder1087

回答

1

你想最早(最低時間戳)記錄(行)與相同的地位的最新(最高時間戳)行,但是,這並不具有後另一行有不同的地位。

試試這個:

Select * 
from table p 
where p.Timestamp = 
    (Select min(TimeStamp) from table x 
     where status = 
      (Select Status from table 
      Where timestamp = 
       (Select Max(timestamp) From table)) 
      and not exists 
       (Select * from table 
        Where timestamp > x.timeStamp 
         and status != p.Status)) 
相關問題