0
点赞
收藏
分享

微信扫一扫

mysql You can't specify target table 'xxx' for update in FROM clause

三千筱夜 2024-01-11 阅读 13

含义:您不能在子句中为更新指定目标表'xxx'。

错误描述:删除语句中直接含select,如下:

DELETE FROM meriadianannotation WHERE
    SeriesID IN (    
        SELECT
            SeriesID as tid
        FROM
            meriadianannotation
        GROUP BY
            SeriesID
        HAVING
            count(SeriesID) > 1
)
AND data NOT IN (
    SELECT
        min(data) as bid
    FROM
        meriadianannotation
    GROUP BY
        SeriesID
    HAVING
        count(SeriesID) > 1
)

 解决方法:加临时表,如下,

DELETE FROM meriadianannotation WHERE
    SeriesID IN (    
select t.tid from(
        SELECT
            SeriesID as tid
        FROM
            meriadianannotation
        GROUP BY
            SeriesID
        HAVING
            count(SeriesID) > 1
    ) t    
)
AND data NOT IN (
select b.bid from(
    SELECT
        min(data) as bid
    FROM
        meriadianannotation
    GROUP BY
        SeriesID
    HAVING
        count(SeriesID) > 1
) b
)

 



举报

相关推荐

0 条评论