mysql8 按具体取值批量更新

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

你可能感兴趣的:(mysql8 按具体取值批量更新)