【发布时间】:2022-01-04 16:57:18
【问题描述】:
我正在尝试将 Payment 的 total 更新为来自 Packages 的 price 的总数,其中事务编号相同。但是 MySQL 一直给我错误:
错误代码:1175。您正在使用安全更新模式,并且您尝试更新没有使用 KEY 列的 WHERE 的表。要禁用安全模式,请切换 Preferences -> SQL Editor 中的选项并重新连接。
命令如下:
UPDATE Payment py
SET total = (SELECT SUM(price) FROM Package pk
WHERE py.transactionNo = pk.transactionNo);
我认为我正在使用一个使用 KEY 列的 WHERE(transactionNo 是 Payment 的主键)。我是不是写错了?
【问题讨论】:
-
错误消息告诉您,您没有使用键列更新来自
py的单行。WHERE子句不是UPDATE查询本身的一部分,而是子查询的一部分 -
是否有任何逻辑为什么要保存作为计算字段的“总计”?我们不保存这些数据。
-
@LeandroBardelli 理想情况下,我认为这不是必需的,但它适用于我需要“有趣的更新语句”的学校项目。因此,如果由于未保存计算字段而导致此查询没有意义,我将不得不尝试其他方法
-
@LeandroBardelli 没问题!您所说的在现实生活中的应用程序中绝对有意义
标签: mysql mysql-workbench