Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения: Databricks SQL
Databricks Runtime
Обновляет значения столбцов для строк, соответствующих предикату. Если предикат не указан, обновите значения столбцов для всех строк.
Это утверждение поддерживается только для таблиц Delta Lake.
Синтаксис
[ common_table_expression ]
UPDATE table_name [table_alias]
SET { { column_name | field_name } = [ expr | DEFAULT } [, ...]
[WHERE clause]
Параметры
-
Распространенные табличные выражения (CTE) — это один или несколько именованных запросов, которые можно повторно использовать несколько раз в основном блоке запросов, чтобы избежать повторяющихся вычислений или улучшить удобочитаемость сложных вложенных запросов.
-
Определяет таблицу для обновления. Имя таблицы не должно использовать темпоральную спецификацию или спецификацию параметров.
table_name
не может быть внешней таблицей. -
Определите псевдоним таблицы. Псевдоним не должен содержать список столбцов.
-
Ссылка на столбец в таблице. Вы можете ссылать каждый столбец по крайней мере один раз.
-
Ссылка на поле в столбце типа STRUCT. Вы можете ссылаться на каждое поле не более одного раза.
-
Произвольное выражение. Если вы ссылаетесь на столбцы
table_name
, они представляют состояние строки до обновления. ПО УМОЛЧАНИЮ
Область применения:
Databricks SQL
Databricks Runtime 11.3 LTS и выше
Выражение
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'