Lezers zoals jij steunen MUO. Wanneer u een aankoop doet via links op onze site, kunnen we een aangesloten commissie verdienen. Lees verder.

Best practices voor databaseontwerp bevelen het gebruik van de beperking UNIQUE aan om duplicaten in een database te voorkomen. Wanneer u echter met een slecht ontworpen database of onzuivere gegevens werkt, moet u mogelijk zelf duplicaten zoeken en deze handmatig verwijderen.

Lees verder om te leren hoe u duplicaten in een SQL-database kunt vinden en hoe u deze kunt verwijderen.

Maak een voorbeelddatabase

Maak voor demonstratiedoeleinden een tabel met de naam Gebruikers met een naam en scorekolom door deze SQL-query uit te voeren.

DRUPPELTAFELALSBESTAATGebruikers;

CREËRENTAFELGebruikers (
pk_id int HOOFDSLEUTEL,
naam VARCHAR (16),
score INT,
);

Voeg enkele voorbeeldwaarden in door deze query uit te voeren:

INVOEGENNAAR BINNEN
Gebruikers (pk_id, naam, score)
WAARDEN
(1, 'Jane', 20),
(2, 'John', 13),
(3, 'Alex', 32),
(4, 'John', 46),
(5, 'Jane', 20),
(6, 'Maria', 34),
(7, 'Jane', 20),
(8, 'John', 13)
instagram viewer

Houd er rekening mee dat sommige van deze rijen dubbele waarden bevatten voor de naamkolom.

Bekijk deze gerust eens SQL-opdrachten en query's als u een meer diepgaande uitleg nodig heeft over het manipuleren van databases met behulp van SQL.

GROUP BY gebruiken om dubbele waarden te vinden

Jij kan gebruik de instructie GROUP BY om waarden te rangschikken die in dezelfde groep aan bepaalde voorwaarden voldoen.

Stel dat de namen in de voorbeeldtabel uniek moeten zijn. U kunt GROUP BY gebruiken om de rijen met dezelfde naam te groeperen.

SELECTEERnaam, GRAAF(naam)
VAN Gebruikers
GROEP OP naam
MET COUNT(naam) > 1

Met COUNT kunt u de rijen selecteren die meer dan één gebruiker met dezelfde naam hebben.

Wanneer u deze query uitvoert, retourneert de database rijen met John en Jane als duplicaten.

Duplicaten uit een database verwijderen

Nadat u de duplicaten hebt gevonden, wilt u ze misschien verwijderen met behulp van de DELETE-instructie.

Voer voor dit voorbeeld de volgende query uit:

MET cte ALS (
SELECTEER *
ROW_NUMBER() MEER DAN (
PARTITIE DOOR
naam, scoren
BESTELLEN DOOR
naam, scoren
) R
VAN
Gebruikers
)

VERWIJDERENVAN cte
WAAR R > 1;

Deze query gebruikt een CTE-expressie om de duplicaten te vinden en verwijdert ze vervolgens allemaal behalve één.

Waarom u dubbele gegevens moet verwijderen

Het verwijderen van dubbele gegevens is geen must. Hiermee kunt u echter de ruimte vrijmaken die dubbele rijen gebruiken.

Minder rijen betekenen ook dat query's veel sneller kunnen worden uitgevoerd, wat leidt tot betere prestaties. Gebruik de query's in deze zelfstudie om duplicaten te vinden en te verwijderen uit een SQL-database.