• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    mysql中错误:1093-You can’t specify target table for update in FROM clause的解决方法

    发现问题

    最近在处理一些数据库中数据的时候,写了下面的这一条sql语句:

    UPDATE f_student
    SET school_id = 0
    WHERE
     id > (
     SELECT
     id
     FROM
     f_student
     WHERE
     school_id = M
     LIMIT 1
     )
    AND id  (
     (
     SELECT
     id
     FROM
     f_student
     WHERE
     school_id = M
     LIMIT 1
     ) + N
    )

    上面的sql是想将某个区间的数据进行修改,但是放到测试环境下一跑,报下面的错误:

    [Err] 1093 – You can't specify target table ‘f_student' for update in FROM clause

    意思很显而易见了,说不能对进行查询操作的表进行update操作,也就说我们的where条件中进行了子查询,并且子查询也是针对需要进行update操作的表的,mysql不支持这种查询修改的方式。

    解决方法

    上网查了一下,针对这种问题可以通过”绕”的方式进行实现,下面看sql语句。

    UPDATE f_student SET school_id = 0 WHERE
                         id > 
                         (
                         SELECT id FROM ( 
                             SELECT id FROM f_student WHERE school_id = M LIMIT 1 
                           ) AS temp 
                         )
                         AND id 
                        (
                         (
                          SELECT id FROM ( 
                                  SELECT id FROM f_student WHERE school_id = M LIMIT 1 
                                 ) AS temp_1 
                         ) + N
                        )

    ok,完全没有问题。上面的sql相比于之前的sql只是在取id的时候绕了一下,通过一个子查询的方式获取到id,而不是直接进行获取。

    总结

    以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。

    您可能感兴趣的文章:
    • MySQL UPDATE更新语句精解
    • Mysql联表update数据的示例详解
    • 实例验证MySQL|update字段为相同的值是否会记录binlog
    • mysql update语句的执行过程详解
    • MySQL select、insert、update批量操作语句代码实例
    • Mysql update多表联合更新的方法小结
    • MySQL执行update语句和原数据相同会再次执行吗
    • mysql事务select for update及数据的一致性处理讲解
    • Mysql Update批量更新的几种方式
    • MySQL中参数sql_safe_updates在生产环境的使用详解
    • MYSQL updatexml()函数报错注入解析
    • mybatis执行批量更新batch update 的方法(oracle,mysql两种)
    • 记一次MySQL更新语句update的踩坑
    上一篇:Linux虚拟机下mysql 5.7安装配置方法图文教程
    下一篇:mysql运行net start mysql报服务名无效的解决办法
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    mysql中错误:1093-You can’t specify target table for update in FROM clause的解决方法 mysql,中,错误,1093-You,can,