Mysql
 sql >> база данни >  >> RDS >> Mysql

Как мога да изчистя дублиращи се записи в таблица с архивирани записи

Използвайте CHECKSUM() функция, за да видите дали данните са идентични, без да проверявате всяка отделна колона.

Да предположим, че имате нещо подобно:

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

Данните във втория и третия ред са дублирани. За да изчистите данните, изпълнете този оператор:

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. php mysql Connect Database от друг сървър

  2. Обединяване на две подобни таблици в MySQL

  3. MySQL данни към JSON чрез PHP

  4. MySQL Group По персонализирано времеви печат

  5. превод mysql_fetch_array към PDO::FETCH_NUM