UPDATE

적용 대상:검사 '예'로 표시 Databricks SQL 검사 '예'로 표시 Databricks 런타임

조건자와 일치하는 행의 열 값을 업데이트합니다. 조건자가 제공되지 않은 경우 모든 행의 열 값을 업데이트합니다.

이 문은 Delta Lake 테이블에서만 지원됩니다.

구문

UPDATE table_name [table_alias]
   SET  { { column_name | field_name }  = [ expr | DEFAULT } [, ...]
   [WHERE clause]

매개 변수

  • table_name

    업데이트되는 테이블을 식별합니다. 테이블 이름은 임시 사양을 사용하면 안됩니다.

    table_name 는 외세 테이블이 아니어야 합니다.

  • table_alias

    테이블의 별칭을 정의합니다. 별칭에 열 목록을 포함하면 안 됩니다.

  • column_name

    테이블의 열에 대한 참조입니다. 각 열을 한 번만 참조할 수 있습니다.

  • field_name

    STRUCT 형식의 열 내 필드에 대한 참조입니다. 각 필드를 한 번만 참조할 수 있습니다.

  • expr

    임의 식입니다. table_name 열을 참조하는 경우 업데이트 전의 행 상태를 나타냅니다.

  • DEFAULT

    적용 대상:검사 '예'로 표시 Databricks SQL 검사 '예'로 표시 Databricks Runtime 11.3 LTS 이상

    열이 정의된 경우 열에 대한 DEFAULT 식, 그렇지 않으면 NULL입니다.

  • WHERE

    조건자로 행을 필터링합니다. 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'