`
qingxing30
  • 浏览: 32172 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

DB2表删除重复数据

    博客分类:
  • SQL
阅读更多

--删除数据库中重复的数据:删除后入库的、保存先入库的

DELETE

FROM

    (

        SELECT

            t2.*,

            rownumber() over (partition BY fieldid,TIME,code,height,type)AS rowid

        FROM

            WEATHER_FORECAST_VERYSHORT t2

        WHERE

            1=1

        AND TIME>= CURRENT DATE - 1 MONTHS

        AND TIME< CURRENT DATE + 1 days ) AS t

WHERE

    t.rowid>1

 

说明:

查询表 WEATHER_FORECAST_VERYSHORT 根据字段(fieldid,TIME,code,height,type)来判断该条记录是否重复

如果有重复的数据,数据的rowid 如下

ID      rowid       

119488 1

119489 2

119490 3

表示有3条重复的记录

删除重复记录,则只需要删除rowid>1的即可。

 

该删除会删除后入库的数据,保存闲入库的数据,而很多情况下我们需要保存最新入库的,删除之前入库的数据,该情况可参考下面第二种方式。

 

 

 --删除数据库中重复的数据:删除先入库的,保存后入库的

DELETE

FROM

    WEATHER_FORECAST_VERYSHORT

WHERE

    id in

    (

        SELECT

          id

        FROM

            (

                SELECT

                    MIN(id) AS id,

                    fieldid,

                    code,

                    type,

                    TIME,

                    height,

                    COUNT(type)

                FROM

                    WEATHER_FORECAST_VERYSHORT

                WHERE

                 time>= current date - 1 MONTHS and time< current date + 1 days 

                GROUP BY

                    fieldid,

                    code,

                    type,

                    TIME,

                    height

                HAVING

                    COUNT(type)>1))

说明:

该删除,会删除先入库的数据,保存最新入库的数据。ID是递增的情况下,可以这么使用。

 

不使用in的方法

delete

FROM

   WEATHER_FORECAST_VERYSHORT2 t1

WHERE

   EXISTS

   (

SELECT

  *

FROM

   WEATHER_FORECAST_VERYSHORT2 t2

WHERE

t1.fieldid=t2.fieldid

AND t1.code = t2.code

AND t1.type = t2.type

AND t1.TIME = t2.TIME

AND t1.height = t2.height

AND t1.id < t2.id 

)

 

 

说明:

code、type、time、height等为比较是否数据重复的字段

t1.id<t2.id 保存数据表中重复记录ID最大的数据,反之,保存ID最小

分享到:
评论

相关推荐

    数据库 查询删除重复数据

    数据库查询删除重复数据是数据库管理中的一项重要操作,旨在查找和删除表中的重复记录。重复记录是根据单个字段或多个字段来判断的。下面介绍几种查找和删除重复记录的方法。 根据单个字段查找和删除重复记录 可以...

    db2错误一览表

    如果SQL语句引用了不存在或已删除的对象,如表、视图或存储过程,DB2将返回-06042815错误。 #### SQL Code -08442612 - 远程SQL执行失败 在分布式数据库环境中,当远程节点上的SQL语句执行失败时,DB2将报告-...

    利用 EMC Avamar 全局重复数据消除软件实现高效数据保护

    - **定义与原理**:全局重复数据消除是一种在多个数据源之间识别和删除重复数据副本的过程。EMC Avamar通过将数据分割成较小的数据段,并在这些段之间查找重复项来实现这一点。 - **技术优势**:这种方法极大地减少...

    DB2错误码对照表

    ### DB2错误码对照表详解 #### 概述 DB2是IBM开发的一款关系数据库管理系统,在企业级应用中广泛使用。对于DB2开发者和DBA来说,了解DB2的错误码及其含义至关重要,这有助于快速定位问题并进行有效调试。本文档提供...

    DB2基本操作命令

    本文将深入解析DB2的一些基本操作命令,包括连接数据库、数据导出与导入、查看表结构、获取帮助以及数据库的备份与恢复。 1. **连接数据库** 使用`connect`命令可以连接到DB2数据库。语法为: ``` db2 connect ...

    db2 常用命令集合

    - `db2 import to c:\dftz.ixf of ixf commitcount 5000 replace into dftz`:从`c:\dftz.ixf`文件导入数据到表`dftz`,当遇到重复键时,用新数据替换旧数据。 - `db2 import to c:\dftz.ixf of ixf commitcount ...

    db2错误码一览表

    ### DB2错误码一览表详解 #### 概述 在使用DB2数据库的过程中,难免会遇到各种错误。为了帮助用户快速定位并解决这些问题,本文档将详细介绍一系列常见的DB2错误码及其含义。这些错误码主要分为正数和负数两大类,...

    db2数据库面试问题

    - **冗余**:在实体之间存在重复的数据或信息。 - **不一致性**:同一实体的不同实例中存在数据不一致的情况。 - **不良数据关系**:实体间关系的不合理或者不清晰。 这些问题都是在设计数据库时需要避免的,以确保...

    DB2数据库语法大全

    2. **数据操作语言(DML)**:涉及插入、更新、删除数据的语句,如`INSERT INTO`,`UPDATE`,`DELETE FROM`等。 3. **数据查询语言(DQL)**:用于检索数据,包括简单的选择查询、联接查询、子查询、聚合函数(如`...

    DB2性能安全文件

    为了避免数据重复,可以在LOAD数据前先执行数据清洗工作,例如使用`DELETE`语句删除重复数据。 **避免DECIMAL类型字段出现问题的方法:** 1. 在LOAD数据时,确保数据格式正确。 2. 使用`TRIM`等函数清理数据。

    db2错误代码大全

    * 535:请求一个主健的定位更新,或请求一个使用自我引出 约束的表的删除操作 * 541:命名外健是一个重复的引用约束 * 551:命名的授权 ID 缺少在命名的 DB2 对象上执行命名操作的权限 * 552:命名的授权 ID 缺少...

    DB2实用教程

    DB2的数据操作涉及表的创建、修改和删除。通过SQL语句,我们可以定义表的结构,包括字段名、数据类型、主键和外键等约束。同时,插入、更新和删除数据也是DB2日常操作的重要部分。此外,索引的建立能显著提升查询...

    DB2约束基础

    在DB2中,主键约束用于定义表的唯一标识,不允许有重复值且不能为空。创建主键约束时,DB2会自动创建索引来提高查询效率。例如: ```sql CREATE TABLE Employees ( EmployeeID INT PRIMARY KEY, Name VARCHAR(50...

    Quest Central for DB2 v5.0.2.4.rar

    7. **自动化任务**:通过计划任务功能,用户可以自动化执行重复性数据库维护工作,如定期备份、数据清理和性能检查,从而节省时间并减少错误。 8. **数据库迁移**:对于需要迁移或升级DB2数据库的场景,Quest ...

    DB2手册pdf

    #### 从数据表中取指定前几条记录 为了获取表中的前几条记录,可以使用`LIMIT`子句(在某些版本的DB2中)。例如:`SELECT * FROM table_name LIMIT 10;` 这将返回表中的前10行。 #### 游标的使用 **游标**是用于...

    DB2 数据库日常操作

    - `MODIFIED BY delPriorityChar`:指定优先级字符用于处理重复记录,即如果表中存在相同记录,则新加载的数据将不会被添加。 - `REPLACE INTO`:意味着如果表中有相同的记录,则会被替换。 - `NONRECOVERABLE`:...

    DB2常用基本操作说明

    31. **清除归档日志文件**:`db2 prune logfile prior to 第一个活动日志文件`删除指定时间之前的归档日志。 32. **创建唯一索引**:`CREATE UNIQUE INDEX indexname ON tablename(columnname,columnname);`在表上...

    DB2课件

    SQL(Structured Query Language)用于查询、插入、更新和删除数据。DB2支持标准的SQL语法,同时也提供了一些扩展特性,如子查询、联接操作、视图、存储过程和触发器。存储过程可以封装复杂的业务逻辑,而触发器则...

Global site tag (gtag.js) - Google Analytics