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


    含义:您不能在子句中为更新指定目标表'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
    )
    
  • 相关阅读:
    LeetCode#191 Number of 1 Bits
    敏捷编程
    过程模型
    磁盘阵列
    RAM和ROM
    cache
    局部性原理
    栈的应用(一)——括号的匹配
    猫狗收养问题
    全局变量和局部变量
  • 原文地址:https://www.cnblogs.com/gaara-zhang/p/10002005.html
Copyright © 2020-2023  润新知