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;