Aktualisieren von Datensätzen in einer Tabelle mit einer anderen Tabelle die Datensätze, WO Parameter
Ich habe 2 Tabellen: Tabelle1 und Tabelle2. Beide Tabellen haben eine Spalte mit dem Namen " Column2.
Möchte ich alle Werte von Tabelle1.Column1 NULL für alle Datensätze, die nicht in Tabelle2. I. e. alle Datensätze, in denen "Tabelle1".Spalte2 <> Tabelle2.Column2.
Dies ist die Abfrage, die ich versuche umzusetzen:
UPDATE a
SET a.Column1 = null
FROM Table1 a
INNER JOIN Table2 b
ON a.Column2 <> b.Column2
Bekomme ich ein "Token Unknown" Dynamischer SQL-Fehler auf "AUS", wenn ich versuche, diese Abfrage ausführen.
Irgendeine Idee, was ich falsch mache? Ich bin ziemlich neu in SQL, so dass es eine gute chance, dass ich die falsche Art von join.
Obwohl in diesem Fall (set null, wenn nicht passend) ist nicht möglich, in firebird-Datenbank, in ähnlichen Fällen könnte man MERGE - Anweisung
InformationsquelleAutor GarethH | 2014-10-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Firebird unterstützt keine joins in
UPDATE
-Aussagen, statt Sie tun müssen, wird so etwas wie dieses:Allerdings scheint dieser Punkt einer fehlenden foreign key-Einschränkung (ab
Table1
zuTable2
), die hätten sich durchgesetzt, diese (oder würde nicht zugelassen haben, die Aufzeichnungen inTable2
gelöscht werden, wenn Sie verwendet wurden, inTable1
).InformationsquelleAutor Mark Rotteveel
Ihr braucht ist nicht ganz klar, da Sie nicht zu erwähnen, wie "Tabelle1" und " Tabelle2 verknüpft sind andere als Column2, so werde ich davon ausgehen, dass eine solche Spalte ist die Verbindung ein. Sie müssen einbeziehen, die Tabelle wurde modifiziert mit einem alias in der Abfrage, irgendwie wie ein "cursor":
wenn eine übereinstimmung gefunden wird, dann wird die Bedingung einen Wert zurück und die "null ist" Teil ist falsch und die Zeile Hinweis aktualisiert werden.
InformationsquelleAutor alvaroc
Diese funktioniert auf jeden Fall auf Firebird 2.5:
InformationsquelleAutor Lyndon
Sollte diese Arbeit in Firebird.
InformationsquelleAutor LeeG