Оператор обновления, упомянутый ниже, должен возвращать ошибку, потому что есть 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. Если я получу сообщение об ошибке, я буду знать, что что-то не так с моим запросом на соединение.

0
shantanuo 4 Дек 2020 в 08:15

1 ответ

Лучший ответ

Если вы напишете его как подзапрос, вы получите ошибку

UPDATE t1 as a 
SET a.y1=( select b.y2 from t2 as b  WHERE a.x1=b.x2)
1
eshirvana 4 Дек 2020 в 15:13