Ich habe eine große PostgreSQL-Tabelle, die ich über Django zugreifen. Da Djangos ORM keine Fensterfunktionen unterstützt, muss ich die Ergebnisse einer Fensterfunktion als reguläre Spalte in die Tabelle einbinden. Ich möchte so etwas wie dies zu tun:Verwenden von Fensterfunktionen in einer Update-Anweisung
UPDATE table_name
SET col1 = ROW_NUMBER() OVER (PARTITION BY col2 ORDER BY col3);
Aber ich bekomme ERROR: cannot use window function in UPDATE
Kann jemand einen alternativen Ansatz vorschlagen? Das Übergeben der Window-Funktionssyntax über Djangos .raw() -Methode ist nicht geeignet, da sie ein RawQuerySet zurückgibt, das keine weiteren ORM-Features wie .filter() unterstützt, die ich brauche.
Danke.
Ich glaube nicht, dass Sie das selbst beitreten müssen? Ich könnte aber auch falsch liegen, da ich dies auf das aufbaue, was in SQL Server funktioniert! –
@Martin: Sie wählen zwei Tabelle aus, eine durch UPDATE 'Tabellenname' und eine andere in der' FROM Tabellenname'-Klausel. Wenn Sie nicht explizit beitreten, entsteht ein kartesisches Produkt. – Max
äh, Nein, ich bin nicht! –