首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何删除唯一标识的连续重复行?

如何删除唯一标识的连续重复行?
EN

Stack Overflow用户
提问于 2020-01-14 08:14:42
回答 1查看 24关注 0票数 0

我有下面的表格,用于收集我感兴趣的产品的信息。

代码语言:javascript
运行
复制
CREATE TABLE priceinfo (
    date TEXT,
    title TEXT,
    sku INTEGER,
    price REAL,
    media TEXT,
    url TEXT
);

如何从包含多个连续行的不同日期重复数据的数据库中删除条目?示例是下面的数据。我希望保留条目,因为它们会发生变化,而不是日复一日保持相同的条目。

代码语言:javascript
运行
复制
1 2019-12-10    Product1    123456789   25.99   Blu-ray https://www.example.com
2 2019-12-11    Product1    123456789   21.59   Blu-ray https://www.example.com
3 2019-12-12    Product1    123456789   21.59   Blu-ray https://www.example.com
4 2019-12-13    Product1    123456789   21.59   Blu-ray https://www.example.com
5 2019-12-14    Product1    123456789   20.89   Blu-ray https://www.example.com
6 2019-12-15    Product1    123456789   21.59   Blu-ray https://www.example.com

在本例中,我希望保留第1行、第2行、第5行和第6行,但删除第3行和第4行,因为这两行中除了日期之外没有任何信息更改。

EN

回答 1

Stack Overflow用户

发布于 2020-01-14 08:18:01

假设日期没有重复项,您可以使用lag()

代码语言:javascript
运行
复制
select t.*
from (select t.*,
             lag(date) over (order by date) as prev_date,
             lag(date) over (partition by title, sku, price, media, url order by date) as prev_date2
      from t
     ) t
where prev_date is null or prev_date <> prev_date2;

编辑:

假设日期是唯一的,您可以使用以下逻辑:

代码语言:javascript
运行
复制
with todelete as (
      select t.*
      from (select t.*,
                   lag(date) over (order by date) as prev_date,
                   lag(date) over (partition by title, sku, price, media, url order by date) as prev_date2
            from t
           ) t
      where prev_date is null or prev_date <> prev_date2
     )
delete from t
    where t.date in (select cte.date from cte);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59725947

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档