如果最后一条记录与之前的记录重复,则使用andorid-db查询来获取最后一条记录或第一条记录

时间:2016-12-22 18:45:51

标签: mysql sqlite android-sqlite android-database

表格status包含如下所示的数据:

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

所以我想要最后一个状态记录,如果它与前一个状态记录不同,或者前一个状态记录是否与该组中的第一个状态相同。我尝试了几件事,但我没有得到所需的结果。有没有有效的方法来实现结果?

1 个答案:

答案 0 :(得分: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))