Sử dụng CHECKSUM()
chức năng để xem liệu dữ liệu có giống hệt nhau hay không mà không cần kiểm tra từng cột.
Giả sử bạn có một cái gì đó như thế này:
create table #t (log_id int, c varchar(10), d int, log_date date)
insert #t values
(1, 'aaaaa', 1, '20140101'),
(1, 'aaaaa', 1, '20140102'),
(1, 'aaaaa', 1, '20140103'),
(1, 'bbbbb', 1, '20140104'),
(2, 'ccc', 10, '20140103'),
(2, 'cdd', 10, '20140105')
Dữ liệu trong hàng thứ hai và thứ ba là trùng lặp. Để làm sạch dữ liệu, hãy thực hiện câu lệnh sau:
with x as (
select *, row_number() over(partition by log_id, checksum(log_id, c, d) order by log_date) as rn
from #t
)
delete x where rn > 1