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

sql删除一个表中除了编号以外其他字段都相同的冗余记录

 
阅读更多
CREATE TABLE DEMO(ID INT, A VARCHAR(2), B VARCHAR(2), C VARCHAR(2), D VARCHAR(2));
INSERT INTO  DEMO SELECT * FROM (
           SELECT 1, '1','2','3','4' FROM DUAL
UNION ALL  SELECT 2, '1','5','3','5' FROM DUAL
UNION ALL  SELECT 3, '1','2','3','4' FROM DUAL
UNION ALL  SELECT 4, '1','4','7','6' FROM DUAL
           );
COMMIT;
--查询出编号以外都相同的数据
SELECT * FROM DEMO T1 WHERE (T1.A,T1.B,T1.C,T1.D) IN (
SELECT T.A,T.B,T.C,T.D FROM DEMO T GROUP BY T.A,T.B,T.C,T.D HAVING COUNT(*) > 1)
--删除除编号以外都相同的数据
DELETE FROM DEMO ID IN (
SELECT T1.ID FROM DEMO T1 WHERE (T1.A,T1.B,T1.C,T1.D) IN (
SELECT T.A,T.B,T.C,T.D FROM DEMO T GROUP BY T.A,T.B,T.C,T.D HAVING COUNT(*) > 1));
COMMIT;
--获取每一个重复数据的最大ID集合
SELECT ID FROM ((
SELECT T1.ID FROM DEMO T1 WHERE (T1.A,T1.B,T1.C,T1.D) IN (
SELECT T.A,T.B,T.C,T.D FROM DEMO T GROUP BY T.A,T.B,T.C,T.D HAVING COUNT(*) > 1))) TEMP 
WHERE ID NOT IN (SELECT MAX(ID) FROM (
SELECT T1.ID FROM DEMO T1 WHERE (T1.A,T1.B,T1.C,T1.D) IN (
SELECT T.A,T.B,T.C,T.D FROM DEMO T GROUP BY T.A,T.B,T.C,T.D HAVING COUNT(*) > 1)) )
分享到:
评论

相关推荐

    中国省市区sql语句,包含字段有点冗余,我不想上传的,但是要积分积分积分

    中国省市区sql语句,包含字段有点冗余,我不想上传的,但是要积分积分积分

    SQL去重 清除冗余数据

    SQL去重,顾名思义,是清除查询结果或者是数据库里不必要的相对某个字段的冗余数据.

    2009达内SQL学习笔记

    select:从一个或多个表中检索一个或多个数据列。包含信息:想选择什么表,从什么地方选择。必须要有From子句。(最常用) 当从多张表里查询的时候,会产生笛卡尔积;可用条件过滤它。 当两个表有相同字段时必须加...

    SqlServer 表单查询问题及解决方法

    Q2:表DEMO_DELTE如下,删除除了自动编号不同,其他都相同的学生冗余信息 Q3:Team表如下,甲乙丙丁为四个球队,现在四个球对进行比赛,用一条sql语句显示所有可能的比赛组合 Q4:请考虑如下SQL语句在Microsoft SQL...

    sqlserver索引表设计数据类型选择

    该ppt详细描述sqlserver索引优化时带来的查询性能提升和更新锁开销,最后介绍表设计,字段数据类型的选择及使用适当的冗余减少表连接

    sql part2.docx

    第七章、复杂查询(上)...3)只能在一个数据库中完成多表连接查询。 7.2.2多表连接中表的对应关系 1)一对一关系 将表一份为二,最简单的对应关系 2)一对多关系 两表通过定义主外键约束,符合第三范式标准的对应关系。

    数据库资料

    表中包含大量的冗余,可能会导致数据异常:更新异常 例如,修改职工号=1001的职务,则必须修改所有职工号=1001的行添加异常 若要增加一个新的职工时,首先必须给这名职工分配一个工程。或者为了添加一名新职工的数据...

    Oracle数据库设计策略及规范.docx

    每个表中需含有如下几个基本字段:一个表的SEQ号,4个创建信息字段,5-8个备用字段,一个删除标记字段,最好还有一个行版本字段 字段名 类型 备注 业务SEQ号 整数型 作为表主键 OBLIGATE1 字符型 备用字段 OBLIGATE...

    SQL Server 2005作业设置定时任务

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

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

    A、2B B、4B C、8B D、10B 18、SQL-server数据库中每个表至多可以有( )列。 A、1024 B、512 C、256 D、65536 SQL-server2000数据库管理系统A全文共9页,当前为第3页。SQL-server2000数据库管理系统A全文共9页,...

    数据库设计中英文术语表.doc

    Base table(基本表):一个命名的表,其记录物理的存储在数据库中。 10. Binary relationship(二元关系):一个ER术语,用于描述两个实体间的关系。例如,p anch Has Staff。 11. Bottom-up approach(自底向上...

    2013-11-12最新完整版火车列车时刻表MYsql数据库

    火车时刻表数据从官方获取,包含当前开行的7143个车次的所有数据(车站,票价等),共54663条记录。 本站的时刻表数据库将不断更新,但由于数据量庞大,无法做到每次都及时更新,如需最新数据库请和本人联系。 ...

    数据库设计规范化.doc

    如果存在过多的冗余数据,这就意味着要占用 了更多的物理空间,同时也对数据的维护和一致性检查带来了问题,当这个员工的电话 号码变化时,冗余数据会导致对多个表的更新动作,如果有一个表不幸被忽略了,那么 就...

    数据库设计思路.doc

    三即对字段冗余性的约束,即任何字段不能由其他字段派生出来,它要求字段 没有冗余。但是如果设计的数据库完全满足这三个范式的话,又未必是最 好的数据库,为了提高数据库的运行效率,我们必须降低范式要求,允许 ...

    5Java性能优化五.zip

    在对数据库优化时,主要目的是建立一个具有良好表结构的数据库。 比方,为了提高多表级联查询的效率,能够合理地使用冗余字段;对于大表,能够使用行的水平分割或者相似Oracle分区的技术;为了提高数据的查询的...

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

    17、下列属于SQL Server的系统数据库是( ) A、model B、public C、Northwind D、System 18、下列不属于SQL Server的系统数据库是( ) A、model B、tempdb C、pubs D、master 19、 你是一个SQL Server的数据库...

    数据库设计与优化.pdf

    1.3.3 主键的设计 主键是必要的,SQL SERVER 的主键同时是一个唯一索引,而且在实际应用中,我们往往选择最小的键组合作为主键, 第 2 页 共 19 页 所以主键往往适合作为表的聚集索引。聚集索引对查询的影响是比较...

    201207完整版列车时刻表Access数据库下载

    该火车时刻表数据从官方获取,包含当前开行的4143个车次的所有数据(车站,票价等),共44663条记录。 本站的时刻表数据库将不断更新,但由于数据量庞大,无法做到每次都及时更新,如需最新数据库请和本人联系。 ...

    。net图书管理系统设计方案

    数据库设计有几个范式,一般我们要做到的是第三范式,即数据表中没有冗余字段以及同一个表中的字段没有函数依赖关系,冗余字段即在一个表中已经保存过的信息,在另一个表中就不应该存在,如果需要的话,可以通过表间...

    201207完整版列车时刻表 数据

    该火车时刻表数据从官方获取,包含当前开行的4143个车次的所有数据(车站,票价等),共44663条记录。 本站的时刻表数据库将不断更新,但由于数据量庞大,无法做到每次都及时更新,如需最新数据库请和本人联系。 ...

Global site tag (gtag.js) - Google Analytics