2017-08-10 2 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で必要とされる操作を確実に実行するための唯一の方法であるようです。

関連する問題