You can't specify target table '表名' for update in FROM clause;
这是一个 MySQL 数据库错误消息,它的意思是你正在尝试执行一个 UPDATE 操作,并且在这个操作中想要直接从要更新的表中用 FROM 子句来选择数据。MySQL 不允许这样做,因为它可能会导致一些不一致和不确定的情况。
例如,以下的 SQL 语句会触发这个错误:
UPDATE oa_phone_caller_record
SET some_column = some_value
WHERE some_other_column IN (
SELECT some_other_column FROM oa_phone_caller_record WHERE yet_another_column = some_condition
);
在这个例子中,你正在尝试更新 oa_phone_caller_record 表,并且更新的条件依赖于从相同的表中选择出来的数据。MySQL 在执行这种类型的查询时遇到了问题。
要解决这个问题,有几种方法可以绕过这个限制:
- 使用临时表 - 首先将需要的数据选择到一个临时表中,然后使用这个临时表来进行更新。
- 使用变量 - 如果可能的话,存储查询结果到变量中,然后使用这个变量进行更新。
- 使用不同的逻辑或者 JOINs - 重写查询以使用
JOIN或者其他逻辑来达成目的,而不是在FROM子句中引用相同的表。
下面是使用 JOIN 来重写上述语句的例子:
UPDATE oa_phon

最低0.47元/天 解锁文章
8355

被折叠的 条评论
为什么被折叠?



