mysql - 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。如果我收到错误,我会知道我的连接查询有问题。
解决方案
如果你把它写成子查询,你会得到一个错误
UPDATE t1 as a
SET a.y1=( select b.y2 from t2 as b WHERE a.x1=b.x2)
推荐阅读
- sql - 如何在没有变量的情况下将 XML 单元格解析为多条记录?
- python-3.x - 可以在一行中完成三个迭代吗?Python 3 for 循环
- python - 如何通过 openpyxl 将整个工作表导入列表
- linux - 我的 Nvidia 驱动程序不用于 OpenGL 渲染?
- typescript - 为什么我的 Jest Function Mock 会影响另一个测试
- c++ - C++,sqlite3. BLOB字段作为查询条件如何处理?
- php - 贝宝订阅:结账时未显示费用?
- visual-studio - Visual Studio C++ 程序集 | 括号的含义?
- .net - 如何在多个服务器中使用相同的域(www.example.com)?
- shell - 使用电子邮件 ID 向用户发送通知的 Shell 脚本从数据库中获取它