Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk:
Databricks SQL
Databricks Runtime
Memperbarui nilai kolom untuk baris yang cocok dengan predikat. Saat tidak ada predikat yang disediakan, perbarui nilai kolom semua baris.
Pernyataan ini hanya didukung untuk tabel Delta Lake.
Sintaks
[ common_table_expression ]
UPDATE table_name [table_alias]
SET { { column_name | field_name } = [ expr | DEFAULT } [, ...]
[WHERE clause]
Parameter
-
Ekspresi tabel umum (CTE) adalah satu atau beberapa kueri bernama yang dapat digunakan kembali beberapa kali dalam blok kueri utama untuk menghindari komputasi berulang atau untuk meningkatkan keterbacaan kueri berlapis yang kompleks.
-
Mengidentifikasi tabel yang akan diperbarui. Nama tabel tidak boleh menggunakan spesifikasi temporal atau spesifikasi opsi.
table_nametidak boleh meja asing. -
Menentukan alias untuk tabel. Alias tidak boleh menyertakan daftar kolom.
-
Referensi ke kolom dalam tabel. Anda dapat mereferensikan setiap kolom paling banyak sekali.
-
Referensi ke bidang dalam kolom berjenis STRUCT. Anda dapat merujuk setiap bidang paling banyak sekali.
-
Ekspresi yang arbitrer. Jika Anda mereferensikan kolom
table_name, kolom tersebut mewakili status baris sebelum pembaruan. DEFAULT
Berlaku untuk:
Databricks SQL
Databricks Runtime 11.3 LTS ke atasEkspresi
DEFAULTuntuk kolom jika ditentukan, NULL sebaliknya.-
Memfilter baris menurut predikat. Klausul
WHEREdapat mencakup kueri bertumpuk dengan pengecualian berikut:- subkueri berlapis, yaitu subkueri di dalam subkueri lain
- Sebuah subkueri
NOT INdi dalamOR, misalnya,a = 3 OR b NOT IN (SELECT c from t)
Dalam kebanyakan kasus, Anda dapat menulis ulang subkueri
NOT INdengan menggunakanNOT EXISTS. Anda harus menggunakanNOT EXISTSbila memungkinkan, karenaUPDATEdengan kueri bertumpukNOT INbisa menajdi lambat.
Memperbarui dari tabel atau gabungan lain
Databricks SQL tidak mendukung UPDATE ... FROM ... JOIN sintaksis yang digunakan dalam beberapa dialek SQL lainnya (misalnya, memperbarui kolom dalam tabel dari gabungan dengan tabel lain). Untuk memperbarui tabel berdasarkan gabungan dengan tabel atau subkueri lain, gunakan MERGE INTO sebagai gantinya.
Contoh
> 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'
Contoh berikut menunjukkan cara memperbarui tabel dari gabungan menggunakan MERGE alih-alih sintaks yang tidak didukung 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;