sql >> Databáze >  >> RDS >> Mysql

Jak mohu vymazat duplicitní položky v tabulce archivovaných záznamů

Použijte CHECKSUM() funkce, abyste zjistili, zda jsou data identická, bez kontroly každého jednotlivého sloupce.

Předpokládejme, že máte něco takového:

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

Údaje ve druhém a třetím řádku jsou duplicitní. Chcete-li data vyčistit, proveďte tento příkaz:

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. Výběr všech polí kromě pouze jednoho pole v mysql

  2. Vytvořte spouštěč DML na serveru SQL Server

  3. Oprava duplicitních záznamů DB (chyba MySQL)

  4. Aktualizujte sloupce, pokud vstupní hodnoty nejsou null, jinak ignorujte a ponechte stávající hodnoty sloupce v databázi