UPDATE
適用対象: Databricks SQL Databricks Runtime
述語に一致する行の列値を更新します。 述語が指定されない場合は、すべての行の列値を更新します。
このステートメントは、Delta Lake テーブルでのみサポートされます。
構文
UPDATE table_name [table_alias]
SET { { column_name | field_name } = [ expr | DEFAULT } [, ...]
[WHERE clause]
パラメーター
-
更新するテーブルを識別します。 テーブル名には、 の指定またはオプションの指定を使用しないでください。
table_name
を外部テーブルにすることはできません。 -
テーブルの別名を定義します。 別名に列リストを含めることはできません。
-
テーブル内の列の参照。 各列は 1 回まで参照できます。
-
STRUCT 型の列内のフィールドの参照。 各フィールドは 1 回まで参照できます。
-
任意の式。
table_name
列を参照する場合、更新前の行の状態を表します。 DEFAULT
適用対象: Databricks SQL Databricks Runtime 11.3 LTS 以上
列が定義されている場合は列の
DEFAULT
式。それ以外の場合は NULL。-
行を述語でフィルター処理します。
WHERE
句には、次の例外を除き、サブクエリが含まれる場合があります。- 入れ子になったサブクエリ (つまり、別のサブクエリ内のサブクエリ)
OR
内のNOT IN
サブクエリ (例:a = 3 OR b NOT IN (SELECT c from t)
)
ほとんどの場合、
NOT EXISTS
を使用してNOT IN
サブクエリを書き換えることができます。NOT IN
サブクエリを使用したUPDATE
は低速になる可能性があるため、可能な限りNOT EXISTS
を使用することをお勧めします。
例
> UPDATE events SET eventType = 'click' WHERE eventType = 'clk'
> UPDATE all_events
SET session_time = 0, ignored = true
WHERE session_time < (SELECT min(session_time) FROM good_events)
> UPDATE orders AS t1
SET order_status = 'returned'
WHERE EXISTS (SELECT oid FROM returned_orders WHERE t1.oid = oid)
> UPDATE events
SET category = 'undefined'
WHERE category NOT IN (SELECT category FROM events2 WHERE date > '2001-01-01')
> UPDATE events
SET ignored = DEFAULT
WHERE eventType = 'unknown'