首页 > 解决方案 > MySQL 是否支持“error_on_nondeterministic_update”之类的参数?

问题描述

下面提到的更新语句应该返回错误,因为有 2 个匹配值。

drop table t1;
drop table t2;

CREATE TABLE t1(x1 int, y1 int);

CREATE TABLE t2(x2 int, y2 int);

INSERT INTO t1 VALUES (1,10), (2,20), (3,30);

INSERT INTO t2 VALUES (2,40), (2,50);

UPDATE t1 as a inner join t2 as b  SET a.y1=b.y2 WHERE a.x1=b.x2;

这会将 2 的值更新为 40,并忽略另一行的值为 50。如果我收到错误,我会知道我的连接查询有问题。

标签: mysqlsql

解决方案


如果你把它写成子查询,你会得到一个错误

UPDATE t1 as a 
SET a.y1=( select b.y2 from t2 as b  WHERE a.x1=b.x2)

推荐阅读