Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Làm cách nào để xóa các mục nhập trùng lặp trong bảng hồ sơ đã lưu trữ

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Có thể loại bỏ tất cả các ràng buộc khóa ngoại trên một bảng cùng một lúc trong mySQL 5 không?

  2. MySQL Loại bỏ dấu ngắt dòng ở cuối khỏi một cột

  3. Chỉ định bí danh cột với biến do người dùng xác định

  4. CHỌN COUNT trong mối quan hệ một-nhiều

  5. Gặp phải lỗi nghiêm trọng trong khi thực thi lệnh MySQL VB