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

Usuń zduplikowane wiersze w MySQL (ignoruje klucz podstawowy)

Poniższy przykład usuwa zduplikowane wiersze w MySQL, ignorując klucz podstawowy lub kolumnę unikatowego identyfikatora.

Przykład usuwa zduplikowane wiersze, ale zachowuje jeden. Czyli w przypadku dwóch identycznych wierszy usuwa jeden z nich i zachowuje drugi.

Przykładowe dane

Załóżmy, że mamy tabelę z następującymi danymi:

SELECT * FROM Dogs;

Wynik:

+---------+-------------+------------+
| DogId   | FirstName   | LastName   |
|---------+-------------+------------|
| 1       | Bark        | Smith      |
| 2       | Bark        | Smith      |
| 3       | Woof        | Jones      |
| 4       | Ruff        | Robinson   |
| 5       | Wag         | Johnson    |
| 6       | Wag         | Johnson    |
| 7       | Wag         | Johnson    |
+---------+-------------+------------+

Widzimy, że pierwsze dwa wiersze są duplikatami, a ostatnie trzy wiersze są duplikatami.

Znajdź duplikaty

Najpierw wybierzmy sprawdź naszą tabelę, aby zobaczyć, ile wierszy jest duplikatami:

SELECT 
    FirstName, 
    LastName, 
    COUNT(*) AS Count
FROM Dogs
GROUP BY FirstName, LastName
HAVING COUNT(*) > 1;

Wynik:

+-----------+----------+-------+
| FirstName | LastName | Count |
+-----------+----------+-------+
| Bark      | Smith    |     2 |
| Wag       | Johnson  |     3 |
+-----------+----------+-------+

Widzimy, że są dwa rzędy z Barkiem Smithem i trzy rzędy z Wagiem Johnsonem.

Zdeduplikujemy tabelę tak, aby zawierała tylko jedną z nich.

Usuń duplikaty

Uruchomienie następującego kodu deduplikuje powyższą tabelę:

DELETE d1 FROM Dogs d1
INNER JOIN Dogs d2
WHERE
    d1.DogId < d2.DogId AND
    d1.FirstName = d2.FirstName AND
    d1.LastName = d2.LastName;

Wynik:

Query OK, 3 rows affected (0.00 sec)

Zobaczmy wynik:

SELECT * FROM Dogs;

Wynik:

+-------+-----------+----------+
| DogId | FirstName | LastName |
+-------+-----------+----------+
|     2 | Bark      | Smith    |
|     3 | Woof      | Jones    |
|     4 | Ruff      | Robinson |
|     7 | Wag       | Johnson  |
+-------+-----------+----------+

Pomyślnie usunęliśmy zduplikowane wiersze z tabeli.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Policz liczbę unikalnych wartości

  2. Wydajność operatora MySQL IN na (dużej?) liczbie wartości

  3. Optymalizacja wyszukiwania MySQL za pomocą polubień i symboli wieloznacznych

  4. Różne sposoby przeglądania tabel w MySQL Server

  5. Jak importować i eksportować pliki CSV za pomocą PHP i MySQL