Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak mogę usunąć zduplikowane wpisy w zarchiwizowanej tabeli rekordów?

Użyj CHECKSUM() funkcja, aby sprawdzić, czy dane są identyczne, bez sprawdzania każdej kolumny.

Załóżmy, że masz coś takiego:

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

Dane w drugim i trzecim wierszu są duplikatami. Aby wyczyścić dane, wykonaj tę instrukcję:

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. Jak prawidłowo używać LINQ z MySQL?

  2. Python MySQLdb iteruje po tabeli

  3. Utworzono nową zmienną, pobierając wartość z tabeli MySQL

  4. Sphinx bez użycia identyfikatora auto_increment

  5. sprawdź wiek przed zarejestrowaniem użytkownika, aby sprawdzić, czy ma więcej niż określony wiek za pomocą mvc