Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения:
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может выполняться достаточно долго.
Обновление из другой таблицы или соединения
Databricks SQL не поддерживает UPDATE ... FROM ... JOIN синтаксис, используемый в некоторых других диалектах SQL (например, обновление столбцов в таблице из соединения с другой таблицей). Чтобы обновить таблицу на основе соединения с другой таблицей или вложенным запросом, используйте MERGE INTO вместо этого.
Примеры
> 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'
В следующем примере показано, как обновить таблицу из соединения, используя MERGE вместо неподдерживаемого синтаксиса UPDATE ... FROM ... JOIN :
-- Equivalent to (not supported in Databricks): UPDATE t1 SET t1.c1 = t2.c1 FROM t1 INNER JOIN t2 ON t1.c2 = t2.c2
> MERGE INTO t1
USING t2 ON t1.c2 = t2.c2
WHEN MATCHED THEN UPDATE SET t1.c1 = t2.c1;