-
SQL with mit update/delete/insert
Hallo zusammen,
ich habe im SQL den with bereits verwendet. Allerdings nur mit anschließendem SELECT. Könnte mir jemand die Syntax nennen wenn ich einen Update Delete oder Insert machen möchte oder eine Lektüre wo ich das finden kann.
Vielen Dank.
Viele Grüße Harald
-
WITH-Konstrukte sind nur Vereinfachungen bei der Verwendung von "derived Tables".
Man kann also
select * from (Select * from MyFile) x
inner join (Select * from Myfile2) y on x.Key = y.Key
verwenden.
Somit kann man eben auch bei Update/delete in der Where-Klausel mit scalaren Subselects umgehen:
update/delete .... MyFile x
where exists (
select * from (select * from MyFile) a inner join (select * from MyFile2) b on ...
where x.Key = a.Key ...
)
Beim Insert sieht es nicht viel anders aus:
insert into MyFileX
select ....
-
Common Table Expressions (WITH ...) sind Bestanddteil des SELECT-Statements und nicht direkt des UPDATE oder DELETE Statements.
In Updates ist nur der FULL-Select zulässig, d.h. keine Common Table Expressions. Du ähnliches wie mit CTEs mit verschachtelten Sub-Selects erreichen.
Wenn Du einen Insert auf der Basis eines Select machst, kannst Du Common Table Expressions verwenden.
Insert into Table
(With X as ...
Select ...)
Birgitta
-
OK danke, werde ich probieren.
Ich dachte ich könnte auch vor dem Update bereits eine Teilauswahl machen und diesen dann in der WHERE Klausel verwenden.
Nach der Art.
with x as
select * from Tabelle1 where Status = 'V'
with y as
select * from Tabelle2 where Status = 'X'
und dann
update Tabelle3 set Status = 'V' where exists (select * from x where ID = x.ID) or
exists (select * from y where ID = y.ID)
OK, ist jetzt kein gutes Beispiel, da die oberen SELECTS ziemlich einfach sind. Mir ging es nur um die Syntax wie so was anzugeben ist.
-
Hängt davon ab, wie komplex die Abfrage ist.
Der einfachste Weg ist natürlich:
update myfile set F1=10
where F1=0
In der Where-Klausel sollte man dann Exists verwenden, wenn der Update von Inhalten einer anderen Datei abhängig ist. Und dabei ist jeder Komplexitätsgrad erlaubt (Group by, from (select ), außer With und Order).
Vielleicht nicht jeder, da ich glaube, dass immer noch nicht mehr als 32 Tabellen in einem Select vorkommen können, aber vielleicht ist diese Erweiterung ja auch an mir vorbeigegangen.
Similar Threads
-
By jojoschluckfirma in forum IBM i Hauptforum
Antworten: 13
Letzter Beitrag: 13-06-17, 13:35
-
By tarkusch in forum NEWSboard Programmierung
Antworten: 3
Letzter Beitrag: 14-02-17, 16:26
-
By tt0ny in forum IBM i Hauptforum
Antworten: 14
Letzter Beitrag: 07-12-15, 07:14
-
By chrisonline in forum NEWSboard Programmierung
Antworten: 12
Letzter Beitrag: 29-07-15, 11:33
-
By svit in forum NEWSboard Programmierung
Antworten: 1
Letzter Beitrag: 26-08-14, 17:26
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks