1

次のクエリで達成しようとしていることを達成するにはどうすればよいですか?

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' を指定することはできません

編集:各プロセスの各タイプの最後のレコードを除くすべてを削除して、イベント ログ テーブルをクリーンアップしようとしています。

4

1 に答える 1

0

SomeDB.outertableクエリから を削除して開始します

DELETE FROM SomeDB.logging AS outertable
于 2011-02-24T16:31:23.707 に答える