sql >> データベース >  >> RDS >> PostgreSQL

更新ステートメントでのウィンドウ関数の使用

    エラーはdjangoではなくpostgresによるものです。これは次のように書き直すことができます:

    WITH v_table_name AS
    (
        SELECT row_number() over (partition by col2 order by col3) AS rn, primary_key
        FROM table_name
    ) 
    UPDATE table_name set table_name.col1 = v_table_name.rn
    FROM v_table_name
    WHERE table_name.primary_key = v_table_name.primary_key;  
    

    または代わりに:

    UPDATE table_name set table_name.col1 = v_table_name.rn
    FROM  
    (
        SELECT row_number() over (partition by col2 order by col3) AS rn, primary_key
        FROM table_name
    ) AS v_table_name
    WHERE table_name.primary_key = v_table_name.primary_key;
    

    これは機能します。 postgres-9.6でテストしたところです。 UPDATEの構文は次のとおりです(オプションの fromlist を参照)。 )。

    これがお役に立てば幸いです。




    1. リレーショナルデータベースの行を削除または無効にする必要がありますか?

    2. 低い権限を持つPL-SQLを使用してOracleで列データ型を取得するにはどうすればよいですか?

    3. 長い単一のSQLiteOpenHelperを、テーブルごとに1つずつ、複数のクラスに分割するにはどうすればよいですか。

    4. SQLiteの日付に月を追加する