2017-08-10 32 views
0

我有以下查询:不能指定目标表在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,但是遗憾的是这没有效果,并且查询仍然失败,出现同样的错误。 我也尝试了几种不同的方式来重写查询,但都无济于事。 有什么我失踪或有另一种方法来实现这一目标吗?

回答

0

最后,我通过在过程中重写整个事件来解决这个问题,在这个过程中,我使用游标执行查询并获取必要的数据。然后我根据光标中选择的字段执行更新语句。

这似乎是可靠地执行不同版本的MySql所需操作的唯一方法。

相关问题