全部產品
Search
文件中心

:UPDATE

更新時間:Oct 25, 2024

UPDATE用於更新資料。AnalyticDB for MySQL支援單表更新和多表更新。

注意事項

  • 執行UPDATE命令時,要求表中存在主鍵。

  • 暫不支援更新主鍵列。

  • 僅單表更新支援ORDER BY和LIMIT子句。

單表更新

文法

UPDATE table_name
    SET assignment_list
    [WHERE where_condition]
    [ORDER BY ...] 
    [LIMIT ...]  

樣本

將customer表中customer_id ='2369'顧客的姓名更改為黃先生。

UPDATE 
      customer 
SET 
      customer_name ='黃先生' 
WHERE 
      customer_id ='2369';      

多表更新

版本要求

僅3.1.6.4及以上核心版本的叢集支援多表更新。

說明

查看企業版湖倉版叢集的核心版本,請參見如何查看執行個體版本資訊。如需升級核心版本,請聯絡支援人員。

文法

UPDATE Table_name1
[INNER JOIN | LEFT JOIN] Table_name2 ON Table_name1.C1 = Table_name2.C1
SET assignment_list
[WHERE where_condition]

注意事項

  • 多表更新僅支援同時更新兩張表。

  • 多表更新不支援ORDER BY和LIMIT子句。

  • 多表更新時,一條SQL語句只能更新一張表,不支援同時更新多張表。

  • 多表更新時,表順序敏感,需要將待更新的表寫在首位。例如,將customer表中的customer_id更新為1,語句如下:

    UPDATE customer LEFT JOIN new_customer ON customer.customer_name = new_customer.customer_name SET customer.customer_id = '1';

樣本

  • LEFT JOIN子句與UPDATE語句一起使用。

    customer_id ='2369'顧客的年齡更新為42。

    UPDATE customer
        LEFT JOIN new_customer ON customer.customer_id = new_customer.customer_id
    SET
        customer.customer_age = 42
    WHERE
        new_customer.customer_id = '2369';
  • INNER JOIN子句與UPDATE語句一起使用。

    將customer表中的customer_id更新為2369。

    UPDATE customer
        INNER JOIN new_customer ON customer.customer_name = new_customer.customer_name 
    SET 
        customer.customer_id = '2369';

    將customer表中的customer_name更新為new_customer表中的customer_name。

    UPDATE customer
        INNER JOIN new_customer ON customer.customer_id = new_customer.customer_id
    SET
        customer.customer_name = new_customer.customer_name;