当前位置:首页 » 编程语言 » 删除表中重复的记录sql
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

删除表中重复的记录sql

发布时间: 2023-01-12 03:15:25

1. sql命令如何删除一个表中相同记录

推荐 删除重复数据

一、具有主键的情况

a.具有唯一性的字段id(为唯一主键)

delect table

where id not in

(

select max(id) from table group by col1,col2,col3...

)

group by 子句后跟的字段就是你用来判断重复的条件,如只有col1,

那么只要col1字段内容相同即表示记录相同。

b.具有联合主键

假设col1+','+col2+','...col5 为联合主键

select * from table where col1+','+col2+','...col5 in (

select max(col1+','+col2+','...col5) from table

where having count(*)>1

group by col1,col2,col3,col4

)

group by 子句后跟的字段就是你用来判断重复的条件,

如只有col1,那么只要col1字段内容相同即表示记录相同。

or

select * from table where exists (select 1 from table x where table.col1 = x.col1 and

table.col2= x.col2 group by x.col1,x.col2 having count(*) >1)

c:判断所有的字段

select * into #aa from table group by id1,id2,....

delete table

insert into table

select * from #aa

二、没有主键的情况

a:用临时表实现

select identity(int,1,1) as id,* into #temp from ta

delect #temp

where id not in

(

select max(id) from # group by col1,col2,col3...

)

delete table ta

inset into ta(...)

select ..... from #temp

b:用改变表结构(加一个唯一字段)来实现

alter table 表 add newfield int identity(1,1)

delete 表

where newfield not in

(

select min(newfield) from 表 group by 除newfield外的所有字段

)

alter table 表 drop column newfield

2. SQL中表里面怎么删除重复数据

出现这种情况的原因是你的表没有建立关键字,当出现重复数据时,sqlserver自带的图形化工具删除就会出现你出现的问题,即不能删除也不能更新,你可以使用如下方法解决:
1、给表建立关键字,比如增加一列自增的字段,这时候就可以删除了,删除完成后再删除新增的列即可
2、不增加字段,使用delete语句删除,但是这种情况会删除符合条件的数据,包括重复的数据
3、推荐使用1的方法

3. sql数据库中出现重复行数据,如何删除这些重复记录

示例

假设存在一个产品信息表Procts,其表结构如下:

CREATETABLEProcts(
ProctIDint,
ProctNamenvarchar(40),
Unitchar(2),
UnitPricemoney
)

表中数据如图:

*fromProcts_tempdroptableProcts_temp


这样就完成了对表中重复记录的删除。无论表有多大,它的执行速度都是相当快的,而且因为几乎不用写语句,所以它也是很安全的

4. sql如何删除重复数据

sql查询去除重复值语句
sql 单表/多表查询去除重复记录
单表distinct
多表group by
group by 必须放在 order by 和 limit之前,不然会报错
************************************************************************************
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(*)>

5. sql中怎么删除两条重复记录并保留一条

将数据去重复后暂存到临时表#a中

selectdistinct*into#afromtable1where条件

deletetable1where删除限制条件

insertintotable1select*from#a-将暂存的数据插回数据库

droptable#a-删除临时表

注:当前的数据库,每一个表都应该有一个标志字段,以保证记录不完全重复,否则实用中极易出问题。

(5)删除表中重复的记录sql扩展阅读:

SQL语句删除掉重复的其他情况

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

SELECT

*

FROM

people

WHERE

peopleId IN (

SELECT

peopleId

FROM

people

GROUP BY

peopleId

HAVING

count(peopleId) > 1

)

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

SELECT

*

FROM

vitae a

WHERE

(a.peopleId, a.seq) IN (

SELECT

peopleId,

seq

FROM

vitae

GROUP BY

peopleId,

seq

HAVING

count(*) > 1

)

参考资料来源:结构化查询语言(SQL)-网络

6. 如何用SQL语句删除两个表中相同的记录

1,首先创建一个表,并在表中插入重复的记录,如下图所示。

7. sql查询去掉重复记录

1、打开要去掉重复数据的数据库,这里新建一张含有重复数据的user表做示例,如下图所示: