推广 热搜: 让人  产品  面板  牛奶  显示器  哪有  也就  站在  关系  爸爸 

sql去重复 、sql去重复查询用法

   日期:2023-04-11     浏览:42    评论:0    
核心提示:sql中删除重复数据SQL Server删除重复行是我们最常见的操作之一,下面就为您介绍六种适合不同情况的SQL Server删除重复行的方法,供您参考。1.如果有ID字段,就是具有唯一性的字段 d

sql中删除重复数据

SQL Server删除重复行是我们最常见的操作之一,下面就为您介绍六种适合不同情况的SQL Server删除重复行的方法,供您参考。

1.如果有ID字段,就是具有唯一性的字段

delect table where id not in (

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

)

group by 子句后跟的字段就是你用来判断重复的条件,如只有col1,那么只要col1字段内容相同即表示记录相同。

2. 如果是判断所有字段也可以这样

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

delete table

insert into table

select * from #aa

3. 没有ID的情况

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

delect # where id not in (

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

delect table

inset into table(...)

select ..... from #temp

4. 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字段内容相同即表示记录相同。

5.

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

select * from #temp where id in (

select max(id) from #emp where having count(*)1 group by col1,col2,col3...)

6.

select distinct * into #temp from tablename

delete tablename

go

insert tablename select * from #temp Sqlclub

go

drop table #temp

以上就是SQL Server删除重复行的方法介绍。

如何用SQL语句去掉重复记录

COL1 中有重复记录(COL1,COL2为主键),如何删除

1、有少数重复记录(在col1,col2上有索引比较好)

DELETE T

WHERe (COL1,COL2) IN

(SELECT COL1,COL2 FROM T GROUP BY COL1,COL2 HAVINg COUNT(*) 1)

AND

ROWID NOT IN

(SELECt MIN(ROWID) FROM T GROUP BY COL1,COL2 HAVINg COUNT(*) 1)

2、大部份记录有重复记录

DELETe T WHERe ROWID NOT IN

(SELECT MIN(ROWID) FROM T GROUP BY COL1,COL2)

3、其他写法

DELETe T WHERe ROWID IN

(SELECT A.ROWID FROM T A,T B

WHERe A.COL1=B.COL1 AND A.COL2 = B.COL2 AND A.ROWID B.ROWID)

######################################

10. 删除重复记录

***效的删除重复记录方法 ( 因为使用了ROWID)

DELETe FROM EMP E

WHERe E.ROWID (SELECt MIN(X.ROWID)

FROM EMP X

WHERe X.EMP_NO = E.EMP_NO);

11. 用TRUNCATE替代DELETe

当删除表中的记录时,在通常情况下, 回滚段(rollback segments ) 用来存放可以被恢复的信息. 如果你没有COMMIT事务,ORACLE会将数据恢复到删除之前的状态(准确地说是

恢复到执行删除命令之前的状况)

而当运用TRUNCATE时, 回滚段不再存放任何可被恢复的信息.当命令运行后,数据不能被恢复.因此很少的资源被调用,执行时间也会很短.

(译者按: TRUNCATE只在删除全表适用,TRUNCATE是DDL不是DML)

12. 尽量多使用COMMIT

只要有可能,在程序中尽量多使用COMMIT, 这样程序的性能得到提高,需求也会因为COMMIT所释放的资源而减少:

COMMIT所释放的资源:

a. 回滚段上用于恢复数据的信息.

b. 被程序语句获得的锁

c. redo log buffer 中的空间

d. ORACLE为管理上述3种资源中的内部花费

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(*)

sql中怎么将重复的记录去掉

方法一按照多条件重复处理:

delete tmp from(

select row_num = row_number() over(partition by 字段,字段 order by 时间 desc)

from 表 where 时间 getdate()-1

) tmp

where row_num 1

方法二按照单一条件进行去重:

delete from 表 where 主键ID not in(

select max(主键ID) from 表 group by 需要去重的字段 having count(需要去重的字段)=1

)

注意:为提高效率如上两个方法都可以使用临时表, not in 中的表可以先提取临时表#tmp,

然后采用not exists来执行,为避免数量过大,可批量用Top控制删除量

delete top(2) from 表

where not exists (select 主键ID

from #tmp where #tmp.主键ID=表.主键ID)

SQL查询语句,怎样查询重复数据

1、***步,打开数据库,并创建一个包含重复数据的新用户表,见下图,转到下面的步骤。

   

2、第二步,执行完上面的操作之后,输入如下红框中的SQL语句,然后单击运行按钮,以查看数据库中用户表中的重复数据,见下图,转到下面的步骤。  

   

3、第三步,执行完上面的操作之后,查找出了具有重复名称的数据,见下图,转到下面的步骤。  

   

4、第四步,执行完上面的操作之后,可以使用如下语句来去除重复数据,见下图,转到下面的步骤。

   

5、第五步,执行完上面的操作之后,最终删除了同一类中的重复数据,见下图。这样,就解决了这个问题了。  

   

   

sql去重复的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于sql去重复查询用法、sql去重复的信息别忘了在本站进行查找喔。

原文链接:http://www.dtcchina.com/news/show-10131.html,转载和复制请保留此链接。
以上就是关于sql去重复 、sql去重复查询用法全部的内容,关注我们,带您了解更多相关内容。
 
标签: 字段 数据 语句
打赏
 
更多>同类资讯
0相关评论

推荐资讯
网站首页  |  VIP套餐介绍  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  手机版  |  SITEMAPS  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报