update 语句可以更新一条记录,或者把满足条件的记录更新为统一的新值.
根据提供的一组具体值批量更新为不同的值, 可以借助 唯一约束冲突 和 insert update 语句.
可以在 ON DUPLICATE KEY UPDATE 子句中使用 VALUES 子句用于指代新值
(MySQL 8.0.20 开始,这个用法被标记不建议使用,建议用后面的 as new 语法)
# pymysql 语法
INSERT INTO t1(id,c,d) values (%(id)s, %(c)s, %(d)s)
ON DUPLICATE KEY UPDATE b = VALUES(b), d = values(d);
MySQL 8.0.19 开始, 可以在 ON DUPLICATE KEY UPDATE 子句中使用 as new 子句用于指代新值
# pymysql 语法
insert into t1(id,c,d) values (%(id)s, %(c)s, %(d)s) AS new
ON DUPLICATE KEY UPDATE c=new.c, d=new.d;
insert into t1(id,c) values (%(id)s, %(c)s) AS new(m,n)
ON DUPLICATE KEY UPDATE c=n;
参考
https://dev.mysql.com/doc/refman/8.0/en/insert-on-duplicate.html
网友评论