Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 多个更新-可能的错误_Mysql - Fatal编程技术网

Mysql 多个更新-可能的错误

Mysql 多个更新-可能的错误,mysql,Mysql,我正在编写一个函数,用于一次执行多个更新 我受到以下示例代码的启发: 但是我的函数的输出是这样的: INSERT INTO table (id,Col1,Col2) VALUES (1,1,1),(2,2,3),(3,9,3),(4,10,12) ON DUPLICATE KEY UPDATE id=VALUES(id), Col1=VALUES(Col1), Col2=VALUES(Col2); 因此,我担心我的输出包含更新之间的主键字段 我尝试了代码,它似乎工作得很好(包括主键) 这会产生

我正在编写一个函数,用于一次执行多个更新

我受到以下示例代码的启发:

但是我的函数的输出是这样的:

INSERT INTO table (id,Col1,Col2) VALUES (1,1,1),(2,2,3),(3,9,3),(4,10,12)
ON DUPLICATE KEY UPDATE id=VALUES(id), Col1=VALUES(Col1), Col2=VALUES(Col2);
因此,我担心我的输出包含更新之间的主键字段

我尝试了代码,它似乎工作得很好(包括主键) 这会产生我还没有遇到的错误吗?
我必须从查询的第二部分删除主键吗?

如果
id
是主键,并且是表上唯一的键,则不必担心
id=VALUES(id)
。在这种情况下,
id
用于匹配,因此该值不会更改

如果表上有多个唯一键,那么这可能是一个问题。如果您的数据是:

id    col1    col2
 2       1       1
如果您在
(col1,col2)
上有一个唯一的键,那么当您插入
(1,1,1)
时,值将更改为:

id    col1    col2
 1       1       1

因此,我只能在一个字段上用主键更新表时使用此函数。谢谢
id    col1    col2
 1       1       1