Xóa các dòng trùng nhau trong SQL

Ngày đưa:  28/05/2012 09:02:30 AM In bài

 Vấn đề:Trong rất nhiều trường hợp, chúng ta gặp một vấn đề nhỏ nhưng không nhỏ đó là các dòng trùng nhau trong một bảng. Vậy làm thế nào để xóa các dòng trùng nhau này.


Giải pháp: 
Tạo bảng và insert vào bảng theo ví dụ sau:

if OBJECT_ID(''MailList'') is not null drop table MailList
 
go
 
create table MailList
 
(
id int identity not null,
mail_add varchar(100) not null,
      Name Nvarchar(50) default ('''') not null,
)
 
go
insert MailList (mail_add, Name)
      values
      (''mailA@gmail.com'', ''Nguyen van A''),
      (''mailB@gmail.com'', ''Nguyen van B''),
      (''mailA@gmail.com'', ''Nguyen Van A'')
     
    
Cột mail_add có hai mail trùng nhau đều là mailA. Để xóa bớt một dòng, dùng câu lệnh sau:


delete from MailList
      where id not in (select MAX(ID) from MailList group by mail_add)
 
Posted by sql-note

Bản quyền ©2011 Trung tâm CNTT và TT Quảng Ngãi