【问题标题】:Mysql is throwing an errorMysql 报错
【发布时间】:2010-11-15 09:21:13
【问题描述】:
DELETE FROM mytable WHERE id IN (SELECT id FROM mytable where roll=1)

我有一张桌子mytable。我上面的查询抛出了一个错误。

您不能在 FROM 子句中指定目标表 'mytable' 进行更新

【问题讨论】:

    标签: mysql sql mysql-error-1093


    【解决方案1】:

    来自MySQL documentation

    目前,您不能在子查询中从表中删除并从同一个表中进行选择。

    幸运的是,您不需要子查询。做吧:

    DELETE FROM mytable WHERE roll=1
    

    启动起来更短更清晰。

    【讨论】:

      【解决方案2】:

      你为什么不这样做呢?

      DELETE FROM mytable WHERE roll=1
      

      【讨论】:

        【解决方案3】:

        你为什么不写

        DELETE FROM mytable WHERE roll=1
        

        ? 发生该错误是因为 MySql 不喜欢在上级查询修改同一张表时从子查询中获取表。

        【讨论】:

          【解决方案4】:

          为什么不简单:

          DELETE FROM mytable WHERE roll=1
          

          【讨论】:

            【解决方案5】:

            为什么要使用子查询?你可以这样写:

            DELETE FROM mytable WHERE where roll=1;
            

            【讨论】:

              【解决方案6】:

              This thread 解释了为什么你不能这样做。

              在这个例子中,你可以使用:

              DELETE FROM mytable WHERE roll=1
              

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 2018-12-30
                • 2013-11-17
                • 1970-01-01
                • 2016-10-05
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多