[mysql] Selecteren en verplaatsen naar andere tabel

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Sorry voor deze n00b vraag maar ik kom er maar niet uit. Ik heb half Google doorzocht en heb van alles geprobeerd.

Ik heb een tabel die er (versimpeld) zo uit ziet:

id, isbn, merchant


Nu heb ik alle boeken nodig met een ISBN die vaker dan 1 keer voorkomt in de database. Alle rijene met ISBN's die maar 1 keer voorkomen moeten worden verwijderd.

Nu heb ik dit al via PHP geprobeerd maar omdat er ong. 3,000,000 boeken in mijn database staan krijg ik een overload. Direct via MySQL moet het wel lukken zei mijn sysadmin.

Alvast heel erg bedankt, ik hoop met mijn andere skills (dus niet SQL) andere users van dienst te kunnen zijn.

Groeten,

Johan

Acties:
  • 0 Henk 'm!

Verwijderd

Als je al van alles hebt geprobeerd, kun je ook wel aangeven wat dat dan allemaal was, en waarom dat niet voldeed. Maar goed...

Maak een temporary table, selecteer alle rijen die moeten blijven staan en stop die in die temporary table (hint: INSERT INTO ... SELECT ... FROM ... GROUP BY ... HAVING ...)
En vervolgens doe je een tweede query die alle rijen verwijdert die niet in de temporary table voorkomen.
Daarna kun je de temporary table weer droppen.

Helaas kun je niet verwijderen uit een tabel waaruit je ook selecteert, vandaar de temp table.

Acties:
  • 0 Henk 'm!

Verwijderd

DELETE FROM boeken
USING boeken, boeken1 as vtable
WHERE (boeken.ID > vtable.ID)
AND (boeken.isbn=vtable.isbn)

Dat moet 'm zijn

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hartelijk dank Chris, het heeft gewerkt! :)