美文网首页
mysql5.7报错1093问题解决

mysql5.7报错1093问题解决

作者: 阳光下丶憧憬 | 来源:发表于2020-07-09 14:43 被阅读0次
    今日在清理数据库多余数据的时候碰到一个问题,delete中使用where 子查询竟然报错1093

    经过查阅资料后,发现mysql中,在更新修改一张表数据的时候,子查询中不能是一样的表名,需要起别名,话不多说,直接贴原始sql

    DELETE  
    FROM
        zz_resume_score_copy1 
    WHERE
        `id` IN (
        SELECT
            `id` 
        FROM
            zz_resume_score_copy1 
        WHERE
            resume_type = 1 
        AND `year` = 2020 
        AND `resume_id` IN ( SELECT `id` FROM zz_resume_proposal_copy1 WHERE `year` = 2020 AND out_status = 0 ))
    

    然后就出现了一下报错:

    1093 - You can't specify target table 'zz_resume_score_copy1' for update in FROM clause
    

    将sql修改修改后,正常运行,代码如下

    DELETE 
    FROM
        zz_resume_score_copy1 
    WHERE
        `id` IN (
        SELECT
            z.`id` 
        FROM
            (
            SELECT
                `id` 
            FROM
                zz_resume_score_copy1 
            WHERE
                resume_type = 1 
                AND `year` = 2020 
            AND `resume_id` IN ( SELECT `id` FROM zz_resume_proposal_copy1 WHERE `year` = 2020 AND out_status = 0 )) z 
        )
    

    其实,只要在子查询外再嵌套一层就好了,只要保证不是同一个表名就OK

    相关文章

      网友评论

          本文标题:mysql5.7报错1093问题解决

          本文链接:https://www.haomeiwen.com/subject/ptxscktx.html