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

Jak usunąć duplikaty w tabeli SQL na podstawie wielu pól

Powinieneś być w stanie wykonać skorelowane podzapytanie, aby usunąć dane. Znajdź wszystkie wiersze, które są duplikatami i usuń wszystkie oprócz tego o najmniejszym identyfikatorze. W przypadku MYSQL należy użyć sprzężenia wewnętrznego (funkcjonalnego odpowiednika EXISTS), na przykład:

delete games from games inner join 
    (select  min(id) minid, date, time,
             hometeam_id, awayteam_id, locationcity, locationstate
     from games 
     group by date, time, hometeam_id, 
              awayteam_id, locationcity, locationstate
     having count(1) > 1) as duplicates
   on (duplicates.date = games.date
   and duplicates.time = games.time
   and duplicates.hometeam_id = games.hometeam_id
   and duplicates.awayteam_id = games.awayteam_id
   and duplicates.locationcity = games.locationcity
   and duplicates.locationstate = games.locationstate
   and duplicates.minid <> games.id)

Aby przetestować, zastąp delete games from games z select * from games . Nie uruchamiaj po prostu usuwania w swojej bazie danych :-)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Alternatywa ograniczenia MySQL CHECK

  2. Nie mogę uruchomić aktualizacji pakietu z powodu mysql2 gem

  3. Utworzyć tabelę w MySQL, która pasuje do innej tabeli?

  4. SQLAlchemy NA AKTUALIZACJI ZDUPLIKOWANEGO KLUCZA

  5. Ostrzeżenie#1264:błąd poza zakresem w mysql