J'ai une grande table PostgreSQL à laquelle j'accède via Django. Étant donné que l'ORM de Django ne prend pas en charge les fonctions de fenêtre, j'ai besoin de faire cuire les résultats d'une fonction de fenêtre dans la table en tant que colonne régulière. Je veux faire quelque chose comme ceci:Utilisation des fonctions de fenêtre dans une instruction de mise à jour
UPDATE table_name
SET col1 = ROW_NUMBER() OVER (PARTITION BY col2 ORDER BY col3);
Mais je reçois ERROR: cannot use window function in UPDATE
Quelqu'un peut-il proposer une autre approche? Passer la syntaxe de la fonction fenêtre via la méthode .raw() de Django ne convient pas, car elle retourne un RawQuerySet, qui ne supporte pas d'autres fonctionnalités ORM telles que .filter(), dont j'ai besoin.
Merci.
Je ne pense pas que vous ayez besoin de l'auto-jointure? Je pourrais bien me tromper alors que je me base sur ce qui fonctionne dans SQL Server! –
@Martin: Vous sélectionnez deux tables, l'une est UPDATE 'tablename' et l'autre est dans la clause' FROM tablename'. Si vous ne vous joignez pas explicitement, cela va produire un produit cartésien. – Max
euh, non je ne suis pas! –