メニュー
Amazon Redshift
データベース開発者ガイド (API Version 2012-12-01)

UPDATE

条件が満たされた場合、1 つまたは複数のテーブル列の値を更新します。

注記

単一 SQL ステートメントの最大サイズは 16 MB です。

構文

Copy
UPDATE table_name SET column = { expression | DEFAULT } [,...] [ FROM fromlist ] [ WHERE condition ]

Parameters

table_name

一時テーブルまたは永続的テーブルテーブルの所有者またはテーブルに関する UPDATE 権限を持っているユーザーだけが行を更新できます。FROM 句を使用したり、式または条件でテーブルを選択する場合、そのテーブルに関する SELECT 権限を所有している必要があります。ここではテーブルにエイリアスを指定することはできません。ただし、FROM 句内でエイリアスを指定することはできます。

SET column =

修正する 1 つまたは複数の列。一覧表示されていない列は現在の値を保持します。ターゲット列の仕様にテーブル名を含めないでください。たとえば、UPDATE tab SET tab.col = 1 は無効です。

expression

指定された列の新しい値を定義する式。

DEFAULT

CREATE TABLE ステートメントで列に割り当てられたデフォルト値を使って、列を更新します。

FROM tablelist

他のテーブルの情報を参照することで、テーブルを更新できます。FROM 句の他のテーブルを一覧表示するか、WHERE 条件の一部としてサブクエリを使用します。FROM 句で一覧表示されているテーブルには、エイリアスを設定することができます。リスト内に UPDATE ステートメントのターゲットテーブルを含める必要がある場合は、エイリアスを使用します。

WHERE 条件

条件と一致する行への更新を制限するオプション句。条件が true を返した場合、指定された SET 列が更新されます。条件は列に関するシンプルな述語の場合もあれば、サブクエリの結果に基づく条件の場合もあります。

UPDATE のターゲットテーブルなど、サブクエリ内の任意のテーブルを指定できます。

使用に関する注意事項

テーブル内の多数の行を更新した後:

  • ストレージ容量を再利用し、行を再ソートするため、テーブルにバキューム処理を実行します。

  • テーブルを分析して、クエリプランナーの統計情報を更新します。

UPDATE ステートメントの FROM 句では left、right、および full 外部結合はサポートされていません。次のエラーが返されます。

Copy
ERROR: Target table must be part of an equijoin predicate
外部結合を指定する必要がある場合は、UPDATE ステートメントの WHERE 句でサブクエリを使用してください。

UPDATE ステートメントでターゲットテーブルへの自己結合が必要な場合、更新操作の行を限定する WHERE 句の基準だけでなく、結合条件を指定する必要があります。一般的に、ターゲットテーブルを自分または他のテーブルに結合する場合のベストプラクティスは、アップデータ対象の行を限定する基準と、結合条件を明確に分離するサブクエリを使用することです。