UPDATE

Berlaku untuk:centang ditandai ya Databricks SQL centang ditandai ya 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

    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.

  • table_name

    Mengidentifikasi tabel yang akan diperbarui. Nama tabel tidak boleh menggunakan spesifikasi temporal atau spesifikasi opsi.

    table_name tidak boleh meja asing.

  • table_alias

    Menentukan alias untuk tabel. Alias tidak boleh menyertakan daftar kolom.

  • column_name

    Referensi ke kolom dalam tabel. Anda dapat mereferensikan setiap kolom paling banyak sekali.

  • field_name

    Referensi ke bidang dalam kolom berjenis STRUCT. Anda dapat merujuk setiap bidang paling banyak sekali.

  • expr

    Ekspresi yang arbitrer. Jika Anda mereferensikan kolom table_name, kolom tersebut mewakili status baris sebelum pembaruan.

  • DEFAULT

    Berlaku untuk:centang ditandai ya Databricks SQL centang ditandai ya Databricks Runtime 11.3 LTS ke atas

    Ekspresi DEFAULT untuk kolom jika ditentukan, NULL sebaliknya.

  • WHERE

    Memfilter baris menurut predikat. Klausul WHERE dapat mencakup kueri bertumpuk dengan pengecualian berikut:

    • subkueri berlapis, yaitu subkueri di dalam subkueri lain
    • Sebuah subkueri NOT IN di dalam OR, misalnya, a = 3 OR b NOT IN (SELECT c from t)

    Dalam kebanyakan kasus, Anda dapat menulis ulang subkueri NOT IN dengan menggunakan NOT EXISTS. Anda harus menggunakan NOT EXISTS bila memungkinkan, karena UPDATE dengan kueri bertumpuk NOT IN bisa 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;