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

PostgreSQLで複数の結合を使用するUPDATEステートメント

    有効なUPDATEと同じ Postgresのステートメント:

    UPDATE incode_warrants iw
    SET    warn_docket_no = iv.viol_docket_no
    FROM   incode_warrantvs  iwvs
    JOIN   incode_violations iv ON iv.viol_citation_no = iwvs.warnv_citation_no
                               AND iv.viol_viol_no = iwvs.warnv_viol_no
    WHERE  iw.warn_rid = iwvs.warnv_rid;
    -- AND iw.warn_docket_no IS DISTINCT FROM iv.viol_docket_no -- see below
    

    FROMでテーブルエイリアスを使用することはできません UPDATEのターゲットテーブルとしての句 句。更新される(1つ!)テーブルはUPDATEの直後にあります キーワード(可能なONLYを無視した場合 間にキーワード)。必要に応じて、そこにエイリアスを追加できます。これがエラーメッセージの直接の原因ですが、それだけではありません。

    更新される列は、常に更新される1つのテーブルからのものであり、テーブル修飾することはできません。

    FROMでターゲットテーブルを繰り返す必要はありません 条項-次のような特別な場合を除く:

    このオプションの追加は、何も変更しない更新を抑制することにより、無意味なコストを回避できます。

    AND iw.warn_docket_no IS DISTINCT FROM iv.viol_docket_no
    

    参照:

    UPDATEの優れたマニュアルの詳細 。



    1. MySQLですべての権限をrootユーザーに戻すにはどうすればよいですか?

    2. MySQLデータベースから画像を取得-C#

    3. オフセット制限のあるクエリの選択が遅すぎる

    4. Hibernateセッションをトランザクション用に開くことができませんでした