我知道你可以一次插入多行,有没有办法在MySQL中一次更新多行(比如在一个查询中)?

编辑:

Name   id  Col1  Col2
Row1   1    6     1
Row2   2    2     3
Row3   3    9     5
Row4   4    16    8

我想将以下所有更新合并到一个查询中

UPDATE table SET Col1 = 1 WHERE id = 1;
UPDATE table SET Col1 = 2 WHERE id = 2;
UPDATE table SET Col2 = 3 WHERE id = 3;
UPDATE table SET Col1 = 10 WHERE id = 4;
UPDATE table SET Col2 = 12 WHERE id = 4;

推荐答案

是的,这是可能的-您可以使用INSERT...重复密钥更新.

以你的例子:

INSERT INTO table (id,Col1,Col2) VALUES (1,1,1),(2,2,3),(3,9,3),(4,10,12)
ON DUPLICATE KEY UPDATE Col1=VALUES(Col1),Col2=VALUES(Col2);

Mysql相关问答推荐

在 MySQL 中转换 JSON 数组值

MYSQL LOAD DATA INFILE 语句适用于工作台,但不适用于 python

使用 MySQL 在树中查找“ Leaf”

sql sum - 处理连接表中的脏重复项

如何在sql中挑出某些名称

Docker(Apple Silicon/M1 Preview)MySQL“ list 列表条目中没有与 linux/arm64/v8 匹配的 list ”

如何解决“错误:MySQL 意外关闭”?

MySQL 8.0 - 客户端不支持服务器请求的认证协议;考虑升级 MySQL 客户端

Mysql 错误:try 转储表空间时,指定为定义者的用户 ('mysql.infoschema'@'localhost') 不存在'

如何在 MySQL 中进行正则表达式替换?

表 'DBNAME.hibernate_sequence' 不存在

是否可以在 macOS 上只安装 mysqldump

带有 OuterRef 的简单子查询

Sequelize Query 查找日期范围内的所有记录

用于 UNIX 套接字文件的 mysqld_safe 目录“/var/run/mysqld”不存在

如何在 localhost (xampp) 中打开/关闭 MySQL 严格模式?

php artisan migrate throwing [PDO Exception] 找不到驱动程序 - 使用 Laravel

MySQL失败:mysql“错误1524(HY000):插件'auth_socket'未加载”

错误 1067 (42000):“created_at”的默认值无效

不使用 sudo 连接到 mysql 服务器