UPDATE

UPDATE

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 
      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
        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 
        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
        customer.customer_name = new_customer.customer_name;