Inhalt einer temporäre Tabelle löschen, geht das?

black_79

Benutzer
Beiträge
16
Wenn ich diese Abfrage ausführe, möchte ich gerne das Ergebnis (Inhalt) löschen.

WITH tmp AS (SELECT monitord_pocsag.kennung, sub, uhrzeit, uhrzeit - lag(uhrzeit) over (PARTITION BY kennung ORDER BY uhrzeit) AS differenz, TEXT, quelle, id FROM monitord_pocsag ORDER BY monitord_pocsag.id DESC)
SELECT * FROM tmp WHERE (differenz <99)


So geht es leider nicht : :(
DELETE FROM tmp WHERE (differenz <99)
 
Werbung:
So geht es leider nicht

Das Ergebnis einer Abfrage kann man nicht löschen. Es ist virtuell.
tmp ist in Deiner Abfrage keine temporäre Tabelle, sondern eine Art Alias für den Select Ausdruck, der hinter AS in runden Klammern folgt.
Wenn Du die Abfrage erneut ausführst, wirst Du ein anderes Ergebnis erhalten, falls sich die Daten geändert haben.

Das Konstrukt nennt sich CTE, schlag mal nach.
 
Code:
postgres=# create table foo (id int primary key, data text);
CREATE TABLE
postgres=# insert into foo select id, 'line ' || id::text from generate_series(1,10) id;
INSERT 0 10
postgres=# with x as (select * from foo where id between 2 and 7) delete from foo where id in (select id from x where id = 4);
DELETE 1
postgres=#
 
Werbung:
Zurück
Oben