Jeg har etterhvert skaffet meg en pen liten samling sitater i en MySQL tabell som brukes til WordPress-innstikket XmasB Quotes. I skrivende stund er det cirka 140001 sitater totalt. Du ser et tilfeldig av disse til høyre på min hjemmeside.
14000 sitater er selvfølgelig ikke et resultat av manuelle måter å legge de inn på. Jeg har laget et lite program som gjør om en liste til MySQL setninger for å legge det inn. Dermed legger jeg inn flere tusen på noen sekunder, gitt at jeg har en liste over sitatene å hente fra. Som et resultat av denne måten å gjøre det på har jeg fått mange duplikater i samlingen2. Cirka 500 var det før jeg fjernet de tidligere idag. Så hvordan fjerner man duplikater fra en MySQL tabell?
Det finnes sikkert mange måter å gjøre en slik jobb på. Jeg valgte å gjøre det enkelt, med enkle spørringer og en midlertidig tabell.
- Først lager jeg en midlertidig tabell hvor duplikatene er luket ut:
CREATE TABLE quotes_temp AS SELECT * FROM wp_xmasb_quotes GROUP BY quote, author
Den nye tabellen vil nå kun inneholde sitatene hvor “quote” og “author” til sammen er unikt, det sørger klausulen “GROUP BY” for. - Neste skritt - tømme den originale tabellen:
TRUNCATE wp_xmasb_quotes
TRUNCATE fjerner innholdet på samme måte som en DELETE kommando3. Backup er selvfølgelig tatt på forhånd? Kjedelig å miste data… - Kopier innholdet fra temp tabellen inn i den originale:
INSERT INTO wp_xmasb_quotes SELECT * FROM quotes_temp - Slett den temporære tabellen:
DROP TABLE quotes_temp
Verre er det ikke.
Siste kommentarer