# DELETE mit INNER JOIN



## Unicate (24. November 2005)

Hallo, ich möchte mehrere Datensätze löschen, die in 2 tabellen mit einander in Beziehung stehen.

Ich habe das :

```
DELETE FROM 
  puz_words INNER JOIN puz_keywords 
  ON puz_words.keyword_id = puz_keywords.id 
WHERE 
  puz_keywords.plugin_id = '1';
```

versucht, er gibt mir aber einen Fehler.
habt ihr ne dolle Idee?


----------



## ZeroEnna (24. November 2005)

Bin mir nicht sicher aber versuch es mal so:


```
DELETE FROM 
  puz_keywords INNER JOIN puz_words 
  ON puz_words.keyword_id = puz_keywords.id 
WHERE 
  puz_keywords.plugin_id = '1';
```

mfG
ZeroEnna


----------



## Unicate (24. November 2005)

Ne, funktioniert nicht! (war ja auch nicht unbedingt anders)

Ne andere Idee?


----------



## hpvw (24. November 2005)

Das geht mit Subqueries:
	
	
	



```
DELETE FROM 
  puz_words
WHERE 
  puz_words.keyword_id IN (
    SELECT 
      puz_keywords.id
    FROM
      puz_keywords
    WHERE
      puz_keywords.plugin_id = '1'
  );
```
Gruß hpvw


----------



## aKraus (25. November 2005)

welche Datenbankversion?
evtl. falsches Forum?


----------



## flooo (25. November 2005)

hi,
hatte letztens auch das Problem du musst es so machen:
DELETE
   tabellennamen
From
  tabellennamen so wie oben auch mit Inner Join und so
WHERE
   usw.

Floooo


----------



## Unicate (26. November 2005)

MySQL 4.1.13-nt
Funktioniert auch nicht mit Subquerys

Ich hoffe, das  das nicht an der DB - Version liegt, da es sicher auch vorkommt, das neuere oder ältere verwendet werden


----------



## hpvw (26. November 2005)

Unicate hat gesagt.:
			
		

> MySQL 4.1.13-nt
> Funktioniert auch nicht mit Subquerys


Ab 4.1 sollten Subqueries funktionieren.
Vielleicht postest Du mal eine Fehlermeldung, das Query, das Du verwendet hast oder einfach ein paar mehr Informationen über das was Du vorhast. Da Dein ursprüngliches Query syntaktisch falsch ist, kann keiner ahnen, was Du damit semantisch meinst.

Gruß hpvw


----------



## Unicate (27. November 2005)

Er bringt keine Fehlermeldung, was eigentlich heissen sollte, dass es funktioniert.
Aber nach dem Beispiel oben, lösche ich die eine Tabelle vollständig.
Und das ist nicht gut!


----------



## DasDZY (8. Dezember 2009)

Thx, Floo hat recht.

delete meinetabelle
from meinetabelle MT
left join deinetabelle DT
on MT.key = DT.key

mfg, DZY


----------

