Ich habe die folgende Tabelle in PostgreSQL 9.2, die Zeitstempel enthält:
gid [PK] (bigserial), timestamp_mes (Zeitstempel ohne Zeitzone), time_diff (Intervall)
1, 2012-01-23 11:03:40, leer
2, 2012-01-23 11:03:42, leer
3, 2012-01-23 11:03:44, leer
Ich habe eine Intervallspalte (time_diff) hinzugefügt und möchte sie mit Zeitdifferenzwerten aus dieser Abfrage füllen:
%Vor%Ich habe die folgende Abfrage versucht, die time_diff-Spalte ohne Erfolg zu aktualisieren:
%Vor%Dies führt zu einem Fehler:
FEHLER: mehr als eine Zeile, die von einer als Ausdruck verwendeten Unterabfrage zurückgegeben wurde
Wie gehe ich vor, um die Spalte "time_diff" mit den Werten aus der Zeitdifferenzabfrage zu aktualisieren?
Sie können eine Fensterfunktion nicht direkt in einem UPDATE verwenden, Sie müssen sie stattdessen in einem Sub-SELECT verwenden - was Sie getan haben. Die Art und Weise, wie Sie versucht haben, dieses Sub-SELECT in Ihrem UPDATE zu verwenden, ist jedoch keine gültige Syntax. Sie müssen das Sub-SELECT in die FROM-Klausel Ihres Updates einfügen, wie in den Postgres-Dokumenten erläutert:
Die richtige Syntax für das, was Sie tun möchten, ist:
%Vor% Offensichtlich müssen Sie den Spaltennamen einer eindeutigen ID ersetzen, die Ihre Zeilen haben, wo ich {{SomeUniqueId}}
Tags und Links sql database postgresql postgresql-9.2 sql-update