zwei tabellen vergleichen und in einer davon die Doppelten löschen

rernanded

Erfahrenes Mitglied
Hi

ich muß zwei tabellen vergleichen und in einer davon die Doppelten löschen.

Konkret: Ich habe Tabelle1 mit Spalte url_alt und Tabelle2 mit Spalte url_neu.

Nun will ich aus Tabelle2 die Datensätze löschen bei denen der Wert in url_neu bereits in Tabelle1 als Wert in url_alt enthalten ist.

Beispiel:

Tabelle1
id=1 url=www.haus.de
id=2 url=www.wohnung.de
id=3 url=www.auto.de

Tabelle2
id=1230 url=www.hausundgarten.de
id=9009 url=www.wohnungsrenovierung.de
id=11033 url=www.auto.de

Gelöscht wird in Tabelle2 der Datensatz mit der id 11033.

Moni
 
Du musst zuerst die IDs der Tabelle 2 ermitteln und dann löschen:
SQL:
DELETE 
FROM
 tabelle2 
WHERE 
 id IN
(SELECT 
 ID
FROM
 TABELLE2
WHERE 
 url in 
  (SELECT url FROM tabelle1)
)
Aufgedröselt ist das dann:
1) (SELECT url FROM tabelle1) ermittelt alle url aus Tabelle1

2) (SELECT ID FROM TABELLE2 WHERE url in) ermittelt alle IDs aus Tabelle2, deren Urls in 1) ermittelt wurde und somit in beiden Tabellen auftauchen.
3) DELETE FROM tabelle 2 WHERE id IN löscht alle Einträge, deren ids in 2) ermittelt wurden


Achtung: Skript ist ungetestet.
 
Zurück