次のクエリがあります。
UPDATE packs set `LastmovementTypeID`=9 WHERE `ShipmentID` IN (SELECT ShipmentID FROM packs packs2 WHERE (packs2.TaskMarker = '2' AND packs2.Movementtype != 'Bezorgscan depot' AND packs2.LastmovementTypeID != 0) UNION SELECT ShipmentID FROM packs packs3 WHERE (packs3.TaskMarker = '3' AND packs3.LastmovementTypeID != 0))
そしてそれを実行すると結果が得られます
#1093 - You can't specify target table 'packs' for update in FROM clause
これの理由は何ですか?私が更新したいのは、クエリによって返されたリストに私のShipmentIDが見つからない同じテーブルのレコードであるためです。
SELECT ShipmentID FROM packs packs2 WHERE (packs2.TaskMarker = '2' AND packs2.Movementtype != 'Bezorgscan depot' AND packs2.LastmovementTypeID != 0) UNION SELECT ShipmentID FROM packs packs3 WHERE (packs3.TaskMarker = '3' AND packs3.LastmovementTypeID != 0)