DELETE Query mit LIKE

DELETE Query mit LIKE

am 27.10.2006 10:58:41 von Neugi

Hi,

ich will einen Query erzeugen und komm nicht drauf wie ich den machen
soll.

mein problem: ich habe 2 tabellen die ich verleichen will, und die
einträge die gleich sind will ich auch einer tabelle löschen.

ich habe

tabelle 1:
id, nummer
1, 008245
...

tabelle 2:
id, nummer
....
33, 8245
....

ich will nun den datensatz mit der id 33 aus tabelle 2 löschen.

ich habe es mit einen LIKE versucht, da ich die eine unbestimmte anzahl
an führenden "0" in tabelle 1 haben im feld nummer.

bis jetzt hab ich es versucht mit:

DELETE tabelle2 FROM tabelle1, tabelle2
WHERE tabelle2.nummer LIKE tabelle1.nummer

DELETE tabelle2 FROM tabelle1, tabelle2
WHERE tabelle2.nummer LIKE tabelle1.%nummer

hat alles leider nichts gebracht.

viellelicht kann mir hier wer helfen.=20

thx

Re: DELETE Query mit LIKE

am 27.10.2006 11:09:38 von Johannes Vogel

Hi Gerhard

Gerhard Neuhofer wrote:
> ich will einen Query erzeugen und komm nicht drauf wie ich den machen
> soll.
> mein problem: ich habe 2 tabellen die ich verleichen will, und die
> einträge die gleich sind will ich auch einer tabelle löschen.
> ich habe
> tabelle 1:
> id, nummer
> 1, 008245
> tabelle 2:
> id, nummer
> 33, 8245
> ich will nun den datensatz mit der id 33 aus tabelle 2 löschen.

Also vergleichen:
select a.id,b.id,a.nummer from tabelle1 a
left join tabelle2 b using (nummer)
where b.id is not null;
bringt alle a.id, b.id und die Nummer raus, wo gleiche Einträge von
Nummer vorhanden sind. ich denke, dass MySQL selbst korrekt castet.

> ich habe es mit einen LIKE versucht, da ich die eine unbestimmte anzahl
> an führenden "0" in tabelle 1 haben im feld nummer.
> bis jetzt hab ich es versucht mit:
[...]
> hat alles leider nichts gebracht.
> viellelicht kann mir hier wer helfen.

Du kannst natürlich obiges Query so umschreiben, dass nur b.id
ausgegeben wird und dann dieses als Subquery einsetzen:

delete from tabelle2 where id in (...);

Wobei das wohl nicht klappt, weil du auf die selbe Tabelle lesen und
schreiben willst. Weil das wohl ne einmalige Sache ist, würde ich
einfach das Ergebnis kurz copy/pasten...

HTH, Johannes

Re: DELETE Query mit LIKE

am 27.10.2006 11:35:25 von Claus Reibenstein

Gerhard Neuhofer schrieb:

> mein problem: ich habe 2 tabellen die ich verleichen will, und die
> einträge die gleich sind will ich auch einer tabelle löschen.

Dein Posting wäre deutlich einfacher zu lesen, wenn Du Dich - wenigstens
einigermaßen - an die deutsche Groß- und Kleinschreibung sowie die
Zeichensetzung halten würdest.

> ich will nun den datensatz mit der id 33 aus tabelle 2 löschen.

Weil die "nummer" auch in "tabelle 1" vorkommt, nehme ich mal an.

> ich habe es mit einen LIKE versucht, da ich die eine unbestimmte anzahl
> an führenden "0" in tabelle 1 haben im feld nummer.

LIKE macht nur bei Strings Sinn, aber nicht bei Zahlen. Ich gehe mal
davon aus, die Spalte "nummer" ist _nicht_ als String angelegt. Falls
doch, wird es etwas komplizierter.

> DELETE tabelle2 FROM tabelle1, tabelle2
> WHERE tabelle2.nummer LIKE tabelle1.nummer

Ersetze "LIKE" durch "=". Dann sollte es funktionieren.

Gruß. Claus