zoukankan      html  css  js  c++  java
  • MySQL 1093

    错误代码如下:

    #(8) 把“邓维杰”同学的成绩全部删除。
    SELECT * FROM sc WHERE EXISTS(SELECT * FROM student WHERE student.sno=sc.sno AND student.sname='邓维杰');
    DELETE FROM sc WHERE degree IN(SELECT degree FROM sc WHERE sno=(SELECT sno FROM student WHERE sname='邓维杰'));
    

    报错:

    [SQL]DELETE FROM sc WHERE degree IN(SELECT degree FROM sc WHERE sno=(SELECT sno FROM student WHERE sname='邓维杰'));
    [Err] 1093 - You can't specify target table 'sc' for update in FROM clause
    

    百度原因:

    update语句中包含的子查询的表和update的表为同一张表时
    报错:1093-You can’t specify target table for update in FROM clause

    mysql不允许update目标表和子查询里面的表为同一张表

    解决方法:

    1. e,就是不用同一张表呗(本人(小白)的解决方法。。)。
    2. 大佬的方法是将子查询又嵌套了一层子查询(即外层的子查询不和父查询同一个表)。

    修改后代码:

    #(8) 把“邓维杰”同学的成绩全部删除。
    SELECT * FROM sc WHERE EXISTS(SELECT * FROM student WHERE student.sno=sc.sno AND student.sname='邓维杰');
    DELETE FROM sc WHERE sno IN (SELECT sno FROM student WHERE sname='邓维杰');
    

    ok.

    附大佬的解决方法:https://www.cnblogs.com/ghjbk/p/10456204.html
    在这里插入图片描述

  • 相关阅读:
    64_l2
    64_l1
    64_k2
    64_k1
    64_j2
    64_j1
    64_g6
    64_g5
    64_g4
    64_g3
  • 原文地址:https://www.cnblogs.com/tfxz/p/12621576.html
Copyright © 2011-2022 走看看