当前位置:首页 > 开发 > 数据库 > 正文

查询和删除表中重复数据sql语句(二)

发表于: 2013-03-22   作者:知了ing   来源:转载   浏览:
摘要: 比方说 在A表中存在一个字段“name”, 而且不同记录之间的“name”值有可能会相同, 现在就是需要查询出在该表中的各记录之间,“name”值存在重复的项; Select Name,Count(*) From A Group By Name Having Count(*) > 1 如果还查性别也相同则如下: Select Name,sex,Count(*) From A
比方说
在A表中存在一个字段“name”,
而且不同记录之间的“name”值有可能会相同,
现在就是需要查询出在该表中的各记录之间,“name”值存在重复的项;
Select Name,Count(*) From A Group By Name Having Count(*) > 1

如果还查性别也相同则如下:
Select Name,sex,Count(*) From A Group By Name,sex Having Count(*) > 1
"重复记录"有两个意义上的重复记录,一是完全重复的记录,也即所有字段均重复的记录,二是部分关键字段重复的记录,比如Name字段重复,而其他字段不一定重复或都重复可以忽略。

1、对于第一种重复,比较容易解决,使用

    select distinct * from tableName

  就可以得到无重复记录的结果集。

  如果该表需要删除重复的记录(重复记录保留1条),可以按以下方法删除

    select distinct * into #Tmp from tableName

    drop table tableName

   select * into tableName from #Tmp

   drop table #Tmp

  发生这种重复的原因是表设计不周产生的,增加唯一索引列即可解决。

2、这类重复问题通常要求保留重复记录中的第一条记录,操作方法如下

  假设有重复的字段为Name,Address,要求得到这两个字段唯一的结果集

select identity(int,1,1) as autoID, * into #Tmp from tableName

select min(autoID) as autoID into #Tmp2 from #Tmp group by Name,autoID

select * from #Tmp where autoID in(select autoID from #tmp2)

  最后一个select即得到了Name,Address不重复的结果集(但多了一个autoID字段,实际写时可以写在select子句中省去此列)

(四)查询重复

select * from tablename where id in (select id from tablename group by id
having count(id) > 1)

经典sql 语句2007-06-08 14:32DROP TABLE 数据表名称 (永久性删除一个数据表)
删除记录:delete from 表名 where 条件(rqjs_id=***)
更新所有记录:update 表名 set 字段名=值
按条件更新:update 表名 set 字段名=值 where 条件(rqjs_id=***)

查询和删除表中重复数据sql语句(二)

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
今天去面试!我给大意了,直接写了个删除语句!又中招了。。。 在网上找了半天也没找到合适的代码!
考虑到这种SQL用到的还是比较多,故在此记录一下。 问题 从表中删除重复的记录,考虑如下表结构信息
在做类erp项目的时候因为代码没处理好导致内外部物料匹配表里面出现了很多重复数据,恰巧那张匹配表
上节讲了删除同一数据表中ID不同其他属性都相同的两条数据,在本节主要描述如何删除两条完全相同的
一个表中 第一条和第二条数据重复,第四条和第五条数据重复,如果把需要把井号和井筒号字段作为主键
我们可能会出现这种情况,某个表原来设计不周全,导致表里面的数据重复,那么,如何对重复的数据进
原文: MSSQL如何在没有主键的表中删除重复数据 为了对重复数据进行实验,下面建一个设计不太好(没有
为了对重复数据进行实验,下面建一个设计不太好(没有主键)表并插入了一些重复数据: create datab
DROP TABLE IF EXISTS `tempTb`; CREATE TEMPORARY TABLE tempTb SELECT product_id,project_id,COU
A、B两表,找出ID字段中,存在A表,但是不存在B表的数据。A表总共13w数据,去重后大约3W条数据,B表
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号