如何在某些字段中删除具有重复数据的连续行(在SQLite中)?

Ahm*_*lal 6 sqlite android

比方说,你有一个像这样的表:

-------------------------------
Date        Name          Type
2017-01-01  John          1
2017-01-02  John          1
2017-01-03  Mike          2
2017-01-04  John          1
-------------------------------
Run Code Online (Sandbox Code Playgroud)

我希望能够按类型分组以获得如下结果

-------------------------
Name          Type
John          1
Mike          2
John          1
-------------------------
Run Code Online (Sandbox Code Playgroud)

正如您所看到的那样,前两行是分组的,因为它们之间没有不同的类型,就像您在移动电话呼叫日志中看到的那样.

我怎样才能在SQLite中实现这一目标?

Ste*_*ers 3

以下查询通过前一行(如果有)上的NOT EXISTS相同值Name和值来实现此目的。Type通过查找严格小于当前行日期的最大日期来找到上一行。

SELECT *
FROM tbl t1
WHERE NOT EXISTS (
  SELECT *
  FROM tbl t2
  WHERE t2.Name = t1.Name
  AND t2.Type = t1.Type
  AND t2.`Date` = (SELECT MAX(`Date`)
                   FROM tbl t3
                   WHERE t3.`Date` < t1.`Date`)
);
Run Code Online (Sandbox Code Playgroud)

SQL Fiddle 演示: http://sqlfiddle.com/#!5/0700cb /3