MySQL dubbele records verwijderen met voorwaarden

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Marc RB

Marc RB

24/02/2024 13:17:55
Quote Anchor link
Ik heb data uit 3 verschillende bronnen in één tabel samengevoegd.
De ene bron wat uitgebreider dan de andere.
Om de tabel te kunnen gaan gebruiken, moet ik deze eerst opschonen.
Dubbele regels verwijderen. Omdat het in totaal om ruim 14000 regels gaat is dat nauwelijks handmatig te doen.
Voor mij zijn de regels dubbel als voornaam, achternaam en woonplaats samen vaker voorkomen. Dan hoeft er daar maar één van in de tabel te blijven. Om het nog lastiger te maken zou ik dan het liefst een regel overhouden waarbij 'telefoon' is ingevuld als dat al ingevuld is.

Voorbeeld data:
ID Voornaam Achternaam Woonplaats Telefoon
1 Piet Puk Haarlem
2 Piet Puk Haarlem 0612345678
3 Kees de Hond Sittard
4 Piet Puk Haarlem
5 Kees de Hond Sittard
6 Sven Test Rotterdam 0687654321

Na de verwijder query zou ik graag dit resultaat hebben:

ID Voornaam Achternaam Woonplaats Telefoon
2 Piet Puk Haarlem 0612345678
5 Kees de Hond Sittard
6 Sven Test Rotterdam 0687654321

iemand een idee hoe ik dit aanpak?

Toevoeging op 24/02/2024 16:01:52:

Ik heb het zelf gevonden maar deel de oplossing voor anderen.

1. Eerst zorg ik ervoor dat het telefonnummer overal staat (ook bij de regels die ik later ga verwijderen)
Dit maakt het allemaal minder complex bij het overhouden van een van de duplicaten.

2. Nu ik regels heb die identiek zijn kan ik deze makkelijker verwijderen en er één overhouden.

DELETE FROM `tbl_rddata`
WHERE `id` NOT IN
(
SELECT MIN(`id`)
FROM `tbl_rddata`
GROUP BY `voornaam`,`achternaam`,`plaatsnaam`
)
 
Er zijn nog geen reacties op dit bericht.



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.