天天看點

幾個删除重複記錄的SQL語句

幾個删除重複記錄的SQL語句

在大的資料庫應用中,經常因為各種原因遇到重複的記錄,造成資料的備援和維護上的不便。

1.用rowid方法

2.用group by方法

3.用distinct方法

1。用rowid方法

據據oracle帶的rowid屬性,進行判斷,是否存在重複,語句如下:

查資料:

    select * from table1 a where rowid !=(select  max(rowid) 

    from table1 b where a.name1=b.name1 and a.name2=b.name2......)

删資料:

   delete  from table1 a where rowid !=(select  max(rowid) 

    from table1 b where a.name1=b.name1 and a.name2=b.name2......)

2.group by方法

查資料:

  select count(num), max(name) from student --列出重複的記錄數,并列出他的name屬性

  group by num

  having count(num) >1 --按num分組後找出表中num列重複,即出現次數大于一次

删資料:

  delete from student

  group by num

  having count(num) >1

  這樣的話就把所有重複的都删除了。

3.用distinct方法 -對于小的表比較有用

create table table_new as  select distinct *  from table1 minux

truncate table table1;

insert into table1 select * from table_new;