【问题标题】:#1093 - You can't specify target table 'installments' for update in FROM clause [duplicate]#1093 - 您不能在 FROM 子句中指定目标表“分期付款”进行更新 [重复]
【发布时间】:2016-06-23 13:13:18
【问题描述】:

我试过了

DELETE FROM installments
WHERE EXISTS (SELECT * FROM `installments`
              JOIN student
              ON installments.s_id=student.s_id
              WHERE installments.curr_sem=3 
                  AND student.bat_id=10 AND student.p_id=170 AND student.DeleteStatus=0);

但显示错误

#1093 - 您不能在 FROM 子句中指定目标表“分期付款”进行更新

请帮帮我

【问题讨论】:

    标签: php mysql


    【解决方案1】:

    使用 DELETE JOIN 试试这个解决方案:

    DELETE 
        i
    FROM 
        installments i JOIN student s USING (s_id)
    WHERE 
        i.curr_sem=3 AND 
        s.bat_id=10 AND 
        s.p_id=170 AND 
        s.DeleteStatus=0
    

    【讨论】:

      【解决方案2】:

      您的陈述的正确形式如下:

      DELETE installments.*  
      FROM installments 
      JOIN student ON installments.s_id=student.s_id
      WHERE installments.curr_sem=3 
      AND student.bat_id=10 
      AND student.p_id=170 
      AND student.DeleteStatus=0;
      

      如果我理解正确的话,您只想删除符合加入条件的分期付款记录。您可以使用连接条件删除或更新一个表中的记录,并且不需要嵌套选择。

      如果您使用 Workbench,则必须禁用安全模式,否则如果您未在 where 中指定键列,则会出现错误。

      让我有你的反馈

      问候

      【讨论】:

        猜你喜欢
        • 2018-06-04
        • 2016-05-19
        • 2015-06-08
        • 2015-07-11
        • 1970-01-01
        • 2014-07-31
        • 2012-01-10
        • 2013-04-09
        • 1970-01-01
        相关资源
        最近更新 更多