AnalyticDB for MySQL支援使用UPDATE文法更新單表資料或多表關聯資料。
注意事項
執行
UPDATE命令時,要求表中存在主鍵。暫不支援更新主鍵列。
JOIN串連的表數量最多為兩個。
僅單表更新支援ORDER BY和LIMIT子句。
在更新資料量較大或資料更新頻率高(超過100 QPS)的情境下,使用
UPDATE更新資料會導致CPU使用率升高。建議您使用REPLACE INTO批次更新資料。詳情請參見REPLACE INTO。
單表更新
文法
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'; 多表更新
文法
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子句。
多表更新時,JOIN串連的表數量最多為兩個。
多表更新時,一條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;