❶ 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语句删除重复的记录
删除重复的数据
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 SERVER 数据库中重复的数据
1、必须保证表中有主键或者唯一索引,或者某列数据不能重复。只有这样,才可能使用一句SQL来实现。否则只能考虑其它办法。下面的语句,假定BB列是不重复的,删除后保存BB列值最大的那条记录。
delete
from
表
where
aa
in
(select
aa
from
表
group
by
aa
having
count(aa)
>
1)
and
bb
not
in
(select
max(bb)
from
表
group
by
aa
having
count(aa)
>
1);
2、有多种写法:
delete
A
from
B
where
A.AA
=
B.AA
delete
A
from
A,B
where
A.AA
=
B.AA
delete
A
where
AA
in
(select
AA
from
B)
3、使用into关键字:
select
*
into
新表名
from
原表
4、取数据前3位,字段必须是类似char类型,使用类似substring这样的函数(SYBASE是substring,ORACLE是substr):
select
substring(字段,1,3)
from
表名
❹ sql数据库中出现重复行数据,如何删除这些重复记录
示例
假设存在一个产品信息表Procts,其表结构如下:
CREATETABLEProcts(
ProctIDint,
ProctNamenvarchar(40),
Unitchar(2),
UnitPricemoney
)
表中数据如图:
*fromProcts_tempdroptableProcts_temp
这样就完成了对表中重复记录的删除。无论表有多大,它的执行速度都是相当快的,而且因为几乎不用写语句,所以它也是很安全的
❺ sql查询去掉重复记录
1、打开要去掉重复数据的数据库,这里新建一张含有重复数据的user表做示例,如下图所示:
❻ mysql怎么去除重复数据
MySQL 删除重复数据
有些 MySQL 数据表中可能存在重复的记录,有些情况我们允许重复数据的存在,但有时候我们也需要删除这些重复的数据。
本章节我们将为大家介绍如何防止数据表出现重复数据及如何删除数据表中的重复数据。
删除重复数据
如果你想删除数据表中的重复数据,你可以使用以下的SQL语句:
❼ 如何删除sql表的索引重复值
例,B1表中ID应为主键,但建表时未设,表中有重复,删除语句如下:
select id,max(c1) as c1,max(c2) as c2,... into #temptable from b1 group by id
go
delete from b1
go
insert into b1 select * from #temptable
go
drop table #temptable
go
❽ sql server 怎么删除表里重复数据
1、必须保证表中有主键或者唯一索引,或者某列数据不能重复。只有这样,才可能使用一句SQL来实现。否则只能考虑其它办法。下面的语句,假定BB列是不重复的,删除后保存BB列值最大的那条记录。
delete from 表
where aa in (select aa from 表 group by aa having count(aa) > 1) and
bb not in (select max(bb) from 表 group by aa having count(aa) > 1);
2、有多种写法:
delete A from B where A.AA = B.AA
delete A from A,B where A.AA = B.AA
delete A where AA in (select AA from B)
3、使用into关键字:
select * into 新表名 from 原表
4、取数据前3位,字段必须是类似char类型,使用类似substring这样的函数(SYBASE是substring,ORACLE是substr):
select substring(字段,1,3) from 表名
❾ SQL中如何删除重复数据
select
字段1,字段2,字段3
from
table
group
by
字段1,字段2,字段3
having
count(*)>1
用上边这句能找出所有重复的数据
字段1,2,3你替换成你表里的字段名,如果有更多字段的话,你就继续添加,最后group
by的时候不要忘记了
删除的时候要建立一个临时表
create
table
new_table
as
select
字段1,字段2,字段3
from
old_table
group
by
字段1,字段2,字段3;
然后删除原表数据
truncate
table
old_table;
然后把临时表数据反插回去
insert
into
new_table
select
*
from
old_table;
❿ 怎么删除SQL中重复的记录
尝试回答LZ的问题,仅供参考:
1、对于这种要求,必须保证表中有主键或者唯一索引,或者某列数据不能重复。只有这样,才可能使用一句SQL来实现。否则只能考虑其它办法。下面的语句,假定BB列是不重复的,删除后保存BB列值最大的那条记录。
delete from 表
where aa in (select aa from 表 group by aa having count(aa) 1) and
bb not in (select max(bb) from 表 group by aa having count(aa) 1);
2、有多种写法: