UPDATE
적용 대상: Databricks SQL
Databricks Runtime
조건자와 일치하는 행의 columnvalues를 업데이트합니다. 조건절이 제공되지 않으면, 모든 행에 대해 update를 columnvalues 합니다.
이 진술은 Delta Lake tables에만 지원됩니다.
구문
UPDATE table_name [table_alias]
SET { { column_name | field_name } = [ expr | DEFAULT } [, ...]
[WHERE clause]
Parameters
-
table을(를) 업데이트할 대상으로 식별합니다. table 이름은 임시 사양 또는 옵션 사양사용하면 안됩니다.
table_name
외국 table해서는 안됩니다. -
table의 별칭을 정의합니다. 별칭에는 columnlist포함하면 안 됩니다.
-
table에 있는 column에 대한 참조입니다. 각 column 한 번만 참조할 수 있습니다.
-
STRUCT 형식의 column 내 필드에 대한 참조입니다. 각 필드를 한 번만 참조할 수 있습니다.
-
임의 식입니다.
table_name
columns 참조하는 경우 update이전 행의 상태를 나타냅니다. DEFAULT
적용 대상:
Databricks SQL
Databricks Runtime 11.3 LTS 이상
정의된 경우에는 column에 대한
DEFAULT
식이고, 그렇지 않으면 NULL입니다.-
조건자로 행을 필터링합니다.
WHERE
절에 하위 쿼리를 포함할 수 있습니다. 단, 다음과 같은 경우는 예외입니다.- 중첩된 하위 쿼리, 즉 다른 하위 쿼리 내부의 하위 쿼리
-
NOT IN
내의OR
하위 쿼리(예:a = 3 OR b NOT IN (SELECT c from t)
)
대부분의 경우
NOT IN
를 사용하여NOT EXISTS
하위 쿼리를 다시 작성할 수 있습니다.NOT EXISTS
하위 쿼리가 있는UPDATE
는 느릴 수 있으므로, 가능한 경우 항상NOT IN
를 사용해야 합니다.
예제
> 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'