UPDATE

Область применения:проверка помечены да Databricks SQL проверка помечены да Databricks Runtime

Обновляет значения столбцов для строк, соответствующих предикату. Если предикат не указан, обновляет значения столбцов для всех строк.

Эта инструкция поддерживается только для таблиц 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 может включать вложенные запросы, за исключением следующих конструкций:

    • Вложенные запросы, т. е. подзапросы внутри другого подзапроса
    • Подзапрос 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'