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

UPDATE table_name [table_alias]
   SET  { { column_name | field_name }  = [ expr | DEFAULT } [, ...]
   [WHERE clause]

Parameter

  • table_name

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

    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.

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'