次のクエリで達成しようとしていることを達成するにはどうすればよいですか?
DELETE SomeDB.outertable
FROM SomeDB.logging AS outertable
WHERE outertable.log_id NOT IN
(
SELECT SomeDB.f.log_id
FROM
(
SELECT aa.*, MAX(aa.log_id) AS max_log_id
FROM SomeDB.logging AS aa
WHERE aa.operation_status = -1
GROUP BY aa.process_id
UNION ALL
SELECT bb.*, MAX(bb.log_id) AS max_log_id
FROM SomeDB.logging AS bb
WHERE bb.operation_status = 1
GROUP BY bb.process_id
UNION ALL
SELECT cc.*, MAX(cc.log_id) AS max_log_id
FROM SomeDB.logging AS cc
WHERE cc.operation_status = 0
GROUP BY cc.process_id
)
AS x
INNER JOIN SomeDB.logging AS f
ON f.process_id = x.process_id
AND f.log_id = x.max_log_id
)
Web に関する少しの調査に基づいて、これのいくつかのバリエーションを試しましたが、常に次のエラーが発生します。
エラー コード: 1093 FROM 句で更新するターゲット テーブル 'outertable' を指定することはできません
編集:各プロセスの各タイプの最後のレコードを除くすべてを削除して、イベント ログ テーブルをクリーンアップしようとしています。