mysql - 如果最后一条记录与之前的记录重复,则android-db查询获取最后一条记录或组中的第一条

标签 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

所以我想要最后一个状态记录,如果它与前一个不同,或者如果前一个和最后一个状态相同,那么我想要那个组中的第一个。我尝试了几件事,但没有得到所需的结果。有什么有效的方法可以达到这个结果吗?

最佳答案

您想要与最新(最高时间戳)行具有相同状态的最早(最低时间戳)记录(行),但之后没有另一行它具有不同的状态。

试试这个:

 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))

关于mysql - 如果最后一条记录与之前的记录重复,则android-db查询获取最后一条记录或组中的第一条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41289835/

相关文章:

java - 使用 kubernetes : access denied for user root 访问 mysql

mysql - 为 mysql boolean 列中的先前值插入 NULL 值

MySQL 如何返回这两个查询的 UNION?

mysql - Delphi 2010,在没有 lib dll 的情况下连接到 mySQL 和 Firebird 数据库

java - 是否长期保留前导零 SQLITE 插入

android - 什么是 "SQLiteDatabase created and never closed"错误?

Android 在 SwipeView 中显示数据库

android - 房间数据库无法返回 group_concat 列

java - Android SQLite 行不更新

android - HashMap ArrayList 到 TextView