Delen via


UPDATE

Van toepassing op: vinkje als ja aan Databricks SQL vinkje als ja aan Databricks Runtime

Hiermee worden de kolomwaarden bijgewerkt voor de rijen die overeenkomen met een predicaat. Wanneer er geen predicaat is opgegeven, werkt u de kolomwaarden voor alle rijen bij.

Deze instructie wordt alleen ondersteund voor Delta Lake-tabellen.

Syntaxis

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

Parameters

  • table_name

    Identificeert de tabel die moet worden bijgewerkt. De tabelnaam mag geen tijdelijke specificatie of optiesspecificatie gebruiken.

    table_name mag geen refererende tabel zijn.

  • table_alias

    Definieer een alias voor de tabel. De alias mag geen kolomlijst bevatten.

  • column_name

    Een verwijzing naar een kolom in de tabel. U kunt maximaal één keer verwijzen naar elke kolom.

  • field_name

    Een verwijzing naar het veld in een kolom van het type STRUCT. U kunt maximaal één keer verwijzen naar elk veld.

  • expr

    Een willekeurige expressie. Als u verwijst naar table_name kolommen die de status van de rij vóór de update vertegenwoordigen.

  • VERSTEK

    Van toepassing op: vinkje als ja aan Databricks SQL vinkje als ja aan Databricks Runtime 11.3 LTS en hoger

    De DEFAULT expressie voor de kolom als deze is gedefinieerd, anders NULL.

  • WAAR

    Rijen filteren op predicaat. De WHERE component kan subquery's bevatten met de volgende uitzonderingen:

    • Geneste subquery's, dat wil gezegd, een subquery in een andere subquery
    • Een NOT IN subquery binnen een OR, bijvoorbeeld a = 3 OR b NOT IN (SELECT c from t)

    In de meeste gevallen kunt u subquery's opnieuw schrijven NOT IN met behulp van NOT EXISTS. U moet waar mogelijk gebruiken NOT EXISTS , omdat UPDATE subquery's NOT IN traag kunnen zijn.

Voorbeelden

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