下面提到的update语句应该返回一个错误,因为有两个匹配的值。
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的行。如果我得到一个错误,我就会知道我的联接查询有问题。
如果您将其写成子查询,您将得到一个错误
UPDATE t1 as a
SET a.y1=( select b.y2 from t2 as b WHERE a.x1=b.x2)