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

usuń zduplikowane wpisy w tabeli

Jednym ze sposobów na zrobienie tego jest dołączenie do tabeli w podzapytaniu za pomocą LEFT JOIN . Podzapytanie otrzymuje najniższy ID dla każdego UID . Gdy rekord nie pasuje do podzapytania, oznacza to po prostu, że nie ma pasującego rekordu i można go bezpiecznie usunąć.

DELETE  a
FROM    TableName a
        LEFT JOIN
        (
            SELECT  uid, MIN(ID) min_ID
            FROM    TableName
            GROUP   BY uid
        ) b ON  a.uid = b.uid AND
                a.ID = b.min_ID
WHERE   b.uid IS NULL

Jeśli jednak rekordy UID może mieć inną nazwę, należy dołączyć name w grupie group by klauzula lub tylko unikalny uid z najniższym ID pozostanie.

DELETE  a
FROM    TableName a
        LEFT JOIN
        (
            SELECT  uid, MIN(ID) min_ID, name
            FROM    TableName
            GROUP   BY uid, name
        ) b ON  a.uid = b.uid AND
                a.ID = b.min_ID AND
                a.name = b.name
WHERE   b.uid IS NULL


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wynik PDOstatement::rowCount użyty po PDO::commit?

  2. Zapytanie MySQL, aby policzyć elementy według tygodnia w bieżących 52 tygodniach?

  3. Wyszukiwanie geograficzne

  4. Jaki jest najlepszy sposób wstawiania i aktualizowania tabeli jednowierszowej w MySQL?

  5. MySQL niewłaściwie skonfigurowany Przyczyna:niebezpieczne użycie ścieżki względnej