• 如何删除一张表重复记录
2016-12-07 16:41:09

temp_table： 是一张临时表

a ：是要处理的表（有重复数据的）

--把 a的记录distinct后的结果放入到temp_table

select   distinct    *    into    temp_table    from   a

--把a表的记录清空

delete  from   a

--把temp_table表的数据（没有重复记录）,插入到a表

insert   into   a   select   *  from  temp_table

--删除临时temp_table

drop  table   temp_table

更多相关内容
• 如下sql，找出重复的记录，和重复记录中ID值最小的记录（中ID为自增长） select MIN(ID) as id, StructSN ,Date,UserID,StarCount,COUNT(StructSN) as c from T_Dor_StructStar where Date >= '20160919' group ...
• 数据库中users，包含u_name,u_pwd两个字段，其中u_name存在重复项，现在要实现把重复的项删除！ ［分析］ 1、生成一张临时new_users，结构与users一样； 2、对users按id做一个循环，每从users中读出一个...
• 一张表中有id和name 两个字段，查询出name重复的所有数据，现在列下： select * from xi a where (a.username) in (select username from xi group by username having count(*) > 1) 2、查询出所有数据进行...

## 一张表中有id和name 两个字段，查询出name重复的所有数据，现在列下：

select * from xi a where (a.username) in  (select username from xi group by username  having count(*) > 1)

2、查询出所有数据进行分组之后，和重复数据的重复次数的查询数据，先列下：

select  count(username) as '重复次数',username from xi group by username  having count(*)>1 order by username desc

3、一下为 查看别人的 结果，现列下：查询及删除重复记录的方法大全

1、查找表中多余的重复记录，重复记录是根据单个字段（peopleId）来判断

select * from people
where peopleId in (select  peopleId  from  people  group  by  peopleId  having  count(peopleId) > 1)

2、删除表中多余的重复记录，重复记录是根据单个字段（peopleId）来判断，只留有rowid最小的记录

delete from people
where peopleId  in (select  peopleId  from people  group  by  peopleId   having  count(peopleId) > 1)
and rowid not in (select min(rowid) from  people  group by peopleId  having count(peopleId )>1)

3、查找表中多余的重复记录（多个字段）

select * from vitae a
where (a.peopleId,a.seq) in  (select peopleId,seq from vitae group by peopleId,seq  having count(*) > 1)

4、删除表中多余的重复记录（多个字段），只留有rowid最小的记录

delete from vitae a
where (a.peopleId,a.seq) in  (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)
and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1)

5、查找表中多余的重复记录（多个字段），不包含rowid最小的记录

select * from vitae a
where (a.peopleId,a.seq) in  (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)
and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1)

(二)

比方说
在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

(三)

方法一

declare @max integer,@id integer
declare cur_rows cursor local for
select 主字段,count(*) from 表名 group by 主字段 having count(*) >;
open cur_rows fetch cur_rows into @id,@maxwhile @@fetch_status=0
begin
select @max = @max -1
set rowcount @max
delete from 表名 where 主字段 = @id
fetch cur_rows into @id,@maxend
close cur_rows
set rowcount 0

方法二＂重复记录＂有两个意义上的重复记录，一是完全重复的记录，也即所有字段均重复的记录，二是部分关键字段重复的记录，比如Name字段重复，而其他字段不一定重复或都重复可以忽略。

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

select distinct * from tableName

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

如果该表需要删除重复的记录（重复记录保留1条），

可以按以下方法删除

select distinct * into #Tmp from tableName
drop table tableName
select * into tableName from #Tmp
drop table #Tmp

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

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 * from tablename where id in (select id from tablenamegroup by idhaving count(id) > 1)

展开全文
• MySQL删除一张表中某一字段值的重复记录 delete from 表名 where id in ( select * from ( select id from 表名 where 字段名 in ( # 查找字段值重复的信息 select 字段名 from 表名 group by 字段名 ...

MySQL删除一张表中某一字段值的重复记录

delete from 表名 where id in (
select * from (
select id from 表名 where 字段名
in (
# 查找字段值重复的信息
select 字段名 from 表名 group by 字段名 having count(1)>1
) and id not in (
# 查找最小id记录
select min(id) from 表名 group by 字段名 having count(1)>1
)
) as 表名_copy
);


如果是两个字段值重复 写法是(字段名1, 字段名2)

展开全文
• 展开全部数据库去重复有以下三种方法：...2.两条记录之间之后只有部分字段的值是有重复的，但是存在主键或者唯一性ID。如果是这种情况的话用DISTINCT是过滤不了的，这就要用到主键...

展开全部

数据库去重复有以下三种方法：32313133353236313431303231363533e78988e69d8331333366306533

1.两条记录或者多条记录的每一个字段值完全相同，这种情况去重复最简单，用关键字distinct就可以去掉。

2.两条记录之间之后只有部分字段的值是有重复的，但是表存在主键或者唯一性ID。如果是这种情况的话用DISTINCT是过滤不了的，这就要用到主键id的唯一性特点及group by分组。

3.两条记录之间之后只有部分字段的值是有重复的，但是表不存在主键或者唯一性ID。这种情况可以使用临时表，讲数据复制到临时表并添加一个自增长的ID，在删除重复数据之后再删除临时表。

扩展资料：

1、查找表中多余的重复记录，重复记录是根据单个字段(peopleId)来判断。

select * from people

where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1)

2、删除表中多余的重复记录，重复记录是根据单个字段(peopleId)来判断，只留有rowid最小的记录。

delete from people

where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1)

and rowid not in (select min(rowid) from people group by peopleId having count(peopleId )>1)

3、查找表中多余的重复记录(多个字段)。

select * from vitae a

where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)

4、删除表中多余的重复记录(多个字段)，只留有rowid最小的记录。

delete from vitae a

where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)

and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1)

5、查找表中多余的重复记录(多个字段)，不包含rowid最小的记录。

select * from vitae a

where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)

and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>。

展开全文
• 最高效的删除重复记录方法
• 主要介绍了用SQL语句去掉重复记录的两种方式，两种方式都可以使用临时操作，具体实现方法大家跟随脚本之家小编一起通过本文学习吧
• 在几千条记录里,存在着些相同的记录,如何能用SQL语句,删除掉重复的呢?谢谢!1、查找中多余的重复记录重复记录是根据单个字段(peopleId)来判断select*...1)2、删除表中多余的重复记录重复记录是根据单个字...
• 新建示例结构和数据 CREATE TABLE user ( name varchar(20) DEFAULT NULL, age int DEFAULT NULL, id int NOT NULL AUTO_INCREMENT, PRIMARY KEY (id) ) ENGINE=InnoDB INS
• mysql查找删除表重复数据方法总结在数据库表里，我们有时候会保存了很多重复的数据，这些重复的数据浪费资源，我们要将其删除掉，应该怎么处理呢？下面来看一下。先看下我们的数据，有一些数据是重复的。要查找...
• 2.把有重复记录中的记录用distinct处理后,复制到临时 INSERT INTO 临时 SELECT DISTINCT * FROM 目标 3.清除掉有重复记录的所有数据 DELETE FROM 目标 4.将临时中的记录复制到目标中 INSERT ...
• 　一张person，有id和name的两个字段，id是唯一的不允许重复，id相同则认为是重复记录。 二、解决 　select id from group by id having count(*) > 1 　按照id分组并计数，某个id号那一组的数量超过1条则认为...
• 数据库SQL server 删除一张表中的重复记录
• 本篇文章分享一下在mysql数据库中根据中的单个字段或者多个字段进行查询重复数据以及删除重复数据的方法。当前情况下数据库中有个大，需要查找其中的电话字段(phone)有重复记录id，以便比较。如果仅仅是查找...
• 有时候我们的中的内容会有重复 的记录，这时候为了减少内存的冗余，我们就需要删除重复记录 我们分以下四步将重复记录删除： 1.把A的记录distinct后的结果放入到temp（临时）  select distinct * into ...
• –查出中有重复的id的记录，并计算相同id的数量select id,count(id) from @table group by id ... 您可能感兴趣的文章:SQL 查询和删除重复字段数据的方法SQL重复记录查询的几种方法SQL语句实现删除重复记录并只保
• 爬虫爬数据的时候，有些记录会重复地插入数据库，如果直接用这些数据做实验，容易对实验结果造成影响，所以必要的时候，需要先清洗数据：把重复记录删除掉只保留一条。我们可以在实验过程中清洗数据，也可以直接在...
• 有两个意义上的重复记录，一是完全重复的记录，也即所有字段均重复的记录，二是部分关键字段重复的记录，比如Name字段重复，而其他字段不一定重复或都重复可以忽略。1、对于第一种重复，比
• 以一个字段为条件筛选重复数据并删除 delete from user.table t where t.pk_id in (select t.pk_id from user.table t group by t.pk_id having count(t.pk_id)>1) and t.rowid not in (select min(t.rowid) from...
• A id name price 1 茶叶 ...如图，假设有A，A中数据如下，如何用一条sql语句删除表重复数据，保留其id值最小的那一条数据（也就是id为1，3，4的保留） ...
• 有这样一张表数据及结果如下： school_id school_name total_student test_takers 1239 Abraham Lincoln High School 55 50 1240 Abraham Lincoln High School 70 35 1241 Acalanes High School 120 89...
• 一张表中存在很多除主键ID外，其他字段全部一样的记录，要求删除这些记录。 举例讲解： CREATE TABLE test( ID INT, NAME VARCHAR2(20), age NUMBER ) INSERT INTO test VALUES(1,'Bob',20); INSERT INTO test...
• 1、查找中多余的重复记录重复记录是根据单个字段（peopleId）来判断 select * from people where peopleId in (select ...2、删除表中多余的重复记录重复记录是根据单个字段（peopleId）来判断，只留有ro...
• mysql 删除一个中,重复的数据 代码实现 说明:假设现在有一个, lottery_base_award_info , 存有base_lottery_id, period_no 相同,但id 不同的重复数据,可以先用 period_no 作分组,然后用 HAVING 对 相同的 period...
• 在SQL Server中除了对拥有十几条记录的进行人工删除外，实现删除重复记录一般都是写一段代码，用游标的方法一行一行检查，删除重复的记录。因为这种方法需要对整个进行遍历，所以对于中的记录数不是很大的时候...
• 本文介绍了Sql Server数据库中删除数据重复记录的方法。 ［项目］数据库中users，包含u_name,u_pwd两个字段，其中u_name存在重复项，现在要实现把重复的项删除！［分析］1、生成一张临时new_users，结构...
• --把cat记录distinct后的结果放入#temp临时 select distinct * into #temp from ...--把#temp的数据（无重复）插入cat insert into cat select * from #temp --删除临时#temp drop table #temp   ...

...