UPDATE

Şunlar için geçerlidir:onay işareti evet olarak işaretlenmiş Databricks SQL onay işareti evet olarak işaretlenmiş Databricks Runtime

Bir koşulla eşleşen satırların sütun değerlerini güncelleştirir. Koşul sağlanmazsa, tüm satırlar için sütun değerlerini güncelleştirin.

Bu deyim yalnızca Delta Lake tabloları için desteklenir.

Sözdizimi

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

Parametreler

  • ortak tablo ifadesi

    Yaygın tablo ifadeleri (CTE), yinelenen hesaplamaları önlemek veya karmaşık, iç içe sorguların okunabilirliğini geliştirmek için ana sorgu bloğu içinde birden çok kez yeniden kullanılabilen bir veya daha fazla adlandırılmış sorgudur.

  • table_name

    Güncelleştirilecek tabloyu tanımlar. Tablo adı, zamansal belirtim ya daseçenek belirtimi kullanmamalıdır.

    table_name yabancı tablo olmamalıdır.

  • table_alias (tablo takma adı)

    Tablo için bir diğer ad tanımlayın. Diğer ad bir sütun listesi içermemelidir.

  • sütun_adı

    Tablo üzerinde bir sütuna referans. Her sütuna en fazla bir kez başvurabilirsiniz.

  • field_name

    STRUCT türündeki bir sütundaki alana referans. Her alana en fazla bir kez başvurabilirsiniz.

  • ifade

    Rastgele bir ifade. table_name sütunlara başvurursanız, bunlar güncelleştirmeden önceki satırın durumunu temsil ederler.

  • VARSAYILAN

    Şunlar için geçerlidir:onay işareti evet olarak işaretlenmiş Databricks SQL onay işareti evet olarak işaretlenmiş Databricks Runtime 11.3 LTS ve üzeri

    Tanımlanmışsa sütun için DEFAULT ifadesi, aksi takdirde NULL.

  • WHERE

    Şarta göre satırları filtreleyin. yan tümcesi WHERE aşağıdaki özel durumlara sahip alt sorgular içerebilir:

    • İç içe alt sorgular, yani başka bir alt sorgu içindeki bir alt sorgu
    • bir NOT IN içindeki bir ORalt sorgu, örneğin, a = 3 OR b NOT IN (SELECT c from t)

    Çoğu durumda, NOT IN alt sorguları NOT EXISTS kullanarak yeniden yazabilirsiniz. NOT EXISTS kullanabildiğiniz her durumda kullanmalısınız, çünkü UPDATE ile NOT IN alt sorgular yavaş olabilir.

Başka bir tablodan güncelleştirme veya birleştirme

Databricks SQL, diğer bazı SQL diyalektlerinde kullanılan söz dizimini desteklemez UPDATE ... FROM ... JOIN (örneğin, tablodaki sütunları başka bir tabloyla birleştirmeden güncelleştirme). Tabloyu başka bir tablo veya alt sorguyla birleştirmeye göre güncelleştirmek için kullanın MERGE INTO .

Örnekler

> 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'

Aşağıdaki örnekte, desteklenmeyen söz dizimi yerine kullanarak birleştirmeden MERGE bir tablonun nasıl güncelleştirilecekleri UPDATE ... FROM ... JOIN gösterilmektedir:

-- 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;