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

删除重复记录sql语句

发布时间: 2022-01-16 22:57:34

❶ 如何使用sql语句在sqlserver中删除重复数据

题主可 参考下列例句:
删除表t1字段col1有重复的记录

delete from t1 where exists
(select 1 from (select col1 from t1 group by col1 having count(1)>1) t where t.col1=t1.col1);

如果希望对于有重复的记录希望保留其中一条记录而不是全部删除,则可以运行下列语句,前提是数据表必须含有自增id列。

delete from t1 where exists
(select 1 from (select col1,max(id) as id from t1 group by col1 having count(1)>1) t where t.col1=t1.col1 and t.id<>t1.id);

❷ 如何用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语句怎么写

如果只是要查询不是重复的记录的话
select distinct * from 表
如果是将多余的重复记录删除
首先将不是重复的数据提取出来,保存到一个临时表中
select distinct * into #temp from 表
然后删除原来的表
delete from 表
最后往里面插入临时表的数据
insert into 表
select * from #temp

❹ SQL语句删除重复记录

delete from tb
where tb.field in
(select a.field from tb a,tb b
where a.rownum > b.rownum
&& a.filed = b.field) c

c表检索的就是有重复字段的

❺ sql查询去掉重复记录

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

❻ SQL语句删除重复的记录

删除重复的数据
delete from tb where id not in (
select id from
(select fileSize,fileName ,max(id) id from tb group by filesize,filename ) a
)

现在完成了重复数据的删除,主要是利用了找出某个分组中最大的那个id,其中包括了所有不重复的id,然后使用not in将需要保留的排除。

❼ sql语句删除重复记录求教 谢谢~

delete from test where guid not in (select min(guid) from test group by id,follower)

这个是保留其他相同,guid最小的那条,当然你也可以把min改成max,保留guid最大的那条

----------补充-----------
delete from test where cast(guid as varchar(255)) not in (select min(cast(guid as varchar(255))) from test group by id,follower)

这样,把guid转成字符再删

❽ SQL语句,删除重复记录。

如果按题目那个样子,这个表只有一个字段的话楼上的解答应该是合要求的吧。就是选出来存在一个临时表里然后再填回去:
select
distinct
test_name
into
#Tmp
from
test1
drop
table
test1
select
*
into
test1
from
#Tmp
drop
table
#Tmp
但是如果按正常的情况下这个表总会有个主键什么的吧?比如说是有个自增的ID字段。这种情况下就可以:
delete
test1
where
ID
not
in
(select
ID
from
test1
group
by
test_name)

❾ sql语句删除重复的记录

delete
from
Table_
where
字段
in
(
--得到有重复记录begin
select
字段
from
(
select
字段,
count(*)
as
c
from
Table_
group
by
字段
)
a
where
c>0
--得到有重复记录end
)
--不知道是不是你想要的答案.