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
    )

根据网络上的一些研究,我已经尝试了几种变体,但我总是收到以下错误:

错误代码:1093 您不能在 FROM 子句中指定目标表 'outertable' 进行更新

编辑:我正在尝试通过删除每个进程的每种类型的最后一条记录之外的所有记录来清理事件记录表。

4

1 回答 1

0

从您的查询中删除,SomeDB.outertable以便它开始

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