Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Bagaimana saya bisa menghapus entri duplikat dalam tabel catatan yang diarsipkan?

Gunakan CHECKSUM() berfungsi untuk melihat apakah datanya sama, tanpa memeriksa setiap kolom.

Asumsikan Anda memiliki sesuatu seperti ini:

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')

Data pada baris kedua dan ketiga adalah duplikat. Untuk membersihkan data, jalankan pernyataan ini:

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. Tipe data memo Microsoft Access ke Tipe Data MySQL

  2. Mengatur nilai default untuk kolom tipe DATE ke tanggal saat ini tanpa bagian waktu?

  3. MySQL bagaimana saya tidak memasukkan baris duplikat ketika saya menggunakan SUM dan COUNT dengan beberapa INNER JOIN?

  4. Permintaan MySQL Not IN tiba-tiba berhenti mengembalikan hasil

  5. MAMP MySQL tidak mengenali nilai my.cnf di OSX