不能指定目标表在FROM子句更新 - mysql的5.7.10 - derived_merge不工作
问题描述:
我有以下查询:不能指定目标表在FROM子句更新 - mysql的5.7.10 - derived_merge不工作
update tblwerknemerdienst toUpdate
set datumtot = (select subdate(datumvanaf,1)
from (select * from tblwerknemerdienst) nextDienst
where nextDienst.Werknemer = toUpdate.Werknemer
and nextDienst.datumvanaf > toUpdate.DatumVanaf
order by DatumVanaf
LIMIT 1)
WHERE DatumTot IS NULL;
查询运行在比MySQL 5.7.10其他MySQL版本的罚款。我在网上搜索了一下,发现你必须设置derived_merge = off,但是遗憾的是这没有效果,并且查询仍然失败,出现同样的错误。 我也尝试了几种不同的方式来重写查询,但都无济于事。 有什么我失踪或有另一种方法来实现这一目标吗?
答
最后,我通过在过程中重写整个事件来解决这个问题,在这个过程中,我使用游标执行查询并获取必要的数据。然后我根据光标中选择的字段执行更新语句。
这似乎是可靠地执行不同版本的MySql所需操作的唯一方法。