`
pingwei000
  • 浏览: 58975 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

SQL直接删除冗余数据

阅读更多
/**
*删除表中有多行的重复的数据的多余记录,即只保留一行,多余的全删除
*/
//表模型:
表名 --tb
        ----------
        | id| n | v |
        ---------
        | 1 | a | 3 |
        ---------
        | 2 | a | 1 |
        ---------
        | 3 | a | 1 |
        ---------
        | 4 | b | 2 |
        ---------
        | 5 | b | 2 |
        ---------
        | 6 | c | 3 |
        ---------
        | 7 | d | 1 |
        ----------
处理后:
        ----------
        | id| n | v |
        ---------
        | 1 | a | 3 |
        ---------
        | 2 | a | 1 |
        ---------
        | 4 | b | 2 |
        ---------
        | 6 | c | 3 |
        ---------
        | 7 | d | 1 |
        ----------

//--四种代表方式如下,其中同一条语句中的rowid和id可以互相全部取代;max(..)与min(..)效果一致--//

1.> delete from tb a where rowid not in
                (select max(b.rowid) from tb b where a.n=b.n and a.v=b.v);
        或
                delete from tb a where rowid not in
                        (select max(b.id) from tb b where a.n=b.n and a.v=b.v);

2.> delete from tb where rowid in
                (select a.rowid form tb a,tb b where a.rowid>b.rowid
                        and a.n=b.n and a.v=b.v);

3.> delete from tb where rowid not in
                (select max(rowid) from tb t group by t.n,t.v);
        或
                delete from tb where rowid not in
                        (select min(id) from tb t group by t.n,t.v);

4.> delete from tb where (n,v) in
                (select n,v from tb group by n,v
                        having count(*)>1)
                and rowid not in
                (select min(rowid) from tb group by n,v
                        having count(*)>1);
分享到:
评论
1 楼 bo_hai 2014-06-26  
学习了。有效。

相关推荐

    基于SQL数据库实现冗余数据的查询与删除.pdf

    基于SQL数据库实现冗余数据的查询与删除.pdf

    SQL面试题-删除冗余数据.sql

    1、删除a、b、c中相同记录 2、删除a、b、c完全相同的记录,但保留一条。

    WordPress删除冗余数据插件Revision Manager

    都会产生相关的日志以记录此次操作,这些数据大多数情况下对于博主来说并没有什么用,持续的增加,反而加大了数据库的容量,进而加长了前台文章的查询时间,所以,删除冗余的数据、优化数据库,就变得尤为重要。...

    SQL对冗余数据的删除重复记录只保留单条的说明

    本文讲一下数据库中通常存在一些冗余数据,如重复记录就是一种,那这样的记录如何删除呢?

    经典SQL面试练习50多道题(含答案).docx

    经典SQL面试练习50多道题(含答案),不只是经典的50道题目练习,还有一些实战逻辑题,如何选择或删除冗余数据。

    SQL Server 2005作业设置定时任务

    公司有一个老项目由于直接把终端拍摄的图片以二进制的形式保存到数据库中,数据库比较大所以需要经常删除这些冗余数据,手动删除费时费力,项目组长让我把这些操作变成自动的,每天执行一次,只保留最近两个月的图片...

    删除MySQL重复数据的方法

    对于如何造成了这个结果,一时没有想清楚,但为了解决入库慢的问题,首先要删除冗余数据。 问题描述 数据库的表结构很简单,如下: 代码如下:+—————-+————–+——+—–+———+——-+ | Field | Type | ...

    2009达内SQL学习笔记

    多数DBMS不需要在单条SQL语句后加分号,但特定的DBMS可能必须在单条SQL语句后加分号。 SQL语句的最后一句要以 “;”号结束 二、写子句顺序 Select column,group_function From table [Where condition] ...

    Sql备份还原精灵v2.1

    可以通过灵活的备份设置,实现软件退出时或关机时自动备份选择的数据库,并根据设置自动删除过期的备份文件以达到节省硬盘空间的目的(配置了两块硬盘做冗余备份比较有用,可防止硬盘突然损坏带来的数据丢失)。...

    SQL 脚本生成器,生成表中内容

    用于生成数据脚本,表中输入数据,生成后的代码可能有冗余,自己看着删除

    Discuz! X3.1 维护工具Tools

    数据库冗余数据清理:对您的数据进行有效性检查,删除冗余数据信息。附件保存方式:将您现在的附件存储方式按照指定方式进行目录结构调整并重新存储。应用过滤规则:按照论坛后台中设置的词语过滤列表,可选择性的对...

    SQL-server2000数据库管理系统A.docx

    A、数据共享 B、数据完整性 C、数据冗余很高 D、数据独立性高 3、下列四项中,不属于SQL2000实用程序的是( )。 A、企业管理器 B、查询分析器 C、服务管理器 D、媒体播放器 4、创建用户数据库的Transact-SQL命令是...

    快件暂扣系统SQL版

    ③ 删除不必要的管理冗余,实现管理规范化、科学化; ④ 统一各种原始单据的格式,统一账目和报表的格式; ⑤ 建立操作日志,系统自动记录所进行的各种操作; ⑥ 界面友好、简单化,做到实用、方便,...

    中北大学数据库概论实验报告五( 关系模式优化-设计型实验)

    3.实验内容依据关系模式分解算法设计满足3NF的关系模式,熟练掌握SQL数据查询和数据定义语句,编写相关SQL语句验证所设计的关系模型是否消除了数据冗余、更新异常、插入异常和删除异常,同时验证模式分解是否具有...

    [详细完整版]8数据库.doc

    13、数据冗余是指( )。 A、 数据和数据之间没有联系 B、数据有丢失 C、 数据量太大 D、存在重复的数据 14、关系数据库中的关键字段是指( ) A、能唯一决定关系的字段 B、不可改动的专用保留字 C、关键的很重要的...

    数据库简答题.docx

    功能:1建立数据库中的表格 2改变数据库系统环境设置 3修改数据库表格结构(新建、删除或是修改表格字段) 4对数据库进行数据的查询 5对数据库进行数据的新建 6对数据库进行数据的修改 7对数据库进行数据的删除 ...

    [详细完整版]IT数据库.doc

    1 下列四个选项中,不属于数据库特点的(C)数据冗余高2 下列四个选项中,不属于SQL SERVER2000实用程序的是(D)美体播放器 3 SQL SERVER2000安装程序创建4个系统数据库,下列哪个不是(C)pub 4 (A)是位于用户和...

    东大22春《数据库技术》在线平时作业1-00001

    具有数据冗余度小、数据共享、以及较高数据独立性等特征的系统是9.后备副本的用途是10.在SQL Server中,给SQL Server引擎提供了一个对象接口的是11.用二维表结构表示实体与实体之间的联系的数据模型是12.在概念模型...

Global site tag (gtag.js) - Google Analytics