thgrch
Goto Top

sql datensätze löschen (MSSQL2005)

Ich möchte alle Datensätze in der Tabelle A löschen, welche NICHT der Abfrage entsprechen.

Abfrage
SELECT fieldA FROM tableA INNER JOIN tableB ON tableA.fieldA = tableB.fieldB;

Herzlichen Dank für Eure Hilfe!

Content-Key: 96080

Url: https://administrator.de/contentid/96080

Printed on: April 24, 2024 at 05:04 o'clock

Member: Biber
Biber Sep 04, 2008 at 09:16:41 (UTC)
Goto Top
Moin thgrch,

 delete from tableA where tableA.fieldA not in (
SELECT fieldA FROM tableA INNER JOIN tableB ON tableA.fieldA = tableB.fieldB);

Grüße
Biber
Member: thgrch
thgrch Sep 04, 2008 at 09:43:27 (UTC)
Goto Top
Hallo und herzlichen Dank!

das will noch nicht.... Fehlermeldung
You can't specify target table 'onair45' for update in FROM clause
->onair45 ist tableA

tableA
fieldA
1
2
3
4
5
6

tableB
FieldB
5
6
5
4
6

alles in tableA löschen was nicht tableA.fieldA = tableB.fieldB
-> in tableA.fieldA wird 1,2 und 3 gelöscht

DANKE!!
Member: Biber
Biber Sep 04, 2008 at 09:58:41 (UTC)
Goto Top
Moin thgrch,

dann kannst Du
  • entweder der tableA in der From-Clause einen Alias geben
  • oder, wahrscheinlich sogar eleganter, Du machst es über einen LEFT statt INNER JOIN:
 delete from tableA 
LEFT JOIN tableB ON tableA.fieldA = tableB.fieldB
Where tableB.fieldB is Null;

Grüße
Biber
Member: thgrch
thgrch Sep 04, 2008 at 11:12:40 (UTC)
Goto Top
Gut...

mit
SELECT fieldA FROM tableA INNER JOIN tableB ON tableA.fieldA = tableB.fieldB
-> werden die Werte 4,5 und 6 ausgegeben

mit
SELECT fieldA FROM tableA left JOIN tableB ON tableA.fieldA = tableB.fieldB Where tableB.fieldB is Null
-> 1,2,und3

...wie kann ich im tablea löschen??

Danke
Member: Biber
Biber Sep 04, 2008 at 11:30:07 (UTC)
Goto Top
Sorry, thgrch,

entweder habe ich die Frage nicht verstanden ...
... oder Du die Antworten nicht ...
... oder die sind halt inkompatibel....

Wir sollten auf Hilfe von dritter Seite warten...

Grüße
Biber
Member: thgrch
thgrch Sep 04, 2008 at 11:49:45 (UTC)
Goto Top
DANKE

mit
SELECT fieldA FROM tableA left JOIN tableB ON tableA.fieldA = tableB.fieldB Where tableB.fieldB is Null

bekomme ich das gewünschte Ergebnis.

Für das löschen ersetzte ich SELECT fiendA durch
DELETE from tableA

DELETE from tableA FROM tableA left JOIN tableB ON tableA.fieldA = tableB.fieldB Where tableB.fieldB is Null

doch leider meldet MYSQL und MSSQL ein Syntax Fehler zurück...
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM tableA left JOIN tableB ON tableA.fieldA = tableB.fieldB Where tableB.field' at line 1

tja...
Member: thgrch
thgrch Sep 04, 2008 at 17:09:12 (UTC)
Goto Top
... tja mit MSSQL2005 funktioniert es!! SUUUPER!
... mit MYSQL 5 kommt der Syntax error


Herzlichen DANK!!!!!!