【问题标题】:Can SELECT but can't DELETE可以选择但不能删除
【发布时间】:2011-08-18 21:22:27
【问题描述】:

我在从 MySQL 的表中删除所需的行时遇到了困难。我正在使用一个相当复杂的子查询来选择行,但由于某种原因,我无法使用类似的语法删除它们。

delete * from table1 as t1
where t1.col1 in 
(select y.col1 
 from table2 x 
 join 
    (select col1, col2 
     from table2
     where col2 like "%- 2%") y 
 on x.col2 = replace(y.col2, "- 2", ""));

同样,我可以选择要删除的确切行,但是当我将查询更改为删除时,我收到以下错误:

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near...

非常感谢任何帮助。

【问题讨论】:

    标签: mysql join subquery sql-delete


    【解决方案1】:

    删除DELETE 之后的*。您通常不会删除单个列,而是删除整行。

    【讨论】:

      【解决方案2】:

      是的,你应该使用

      delete from table1
      

      或者如果查询中有多个表,则需要输入要从中删除的表的名称。

      delete table1 from table1 inner join table2 on table1.id = table2.t1ID
      

      【讨论】:

        【解决方案3】:

        删除*。 DELETE 是一种全有或全无的操作。

        【讨论】:

          【解决方案4】:

          尝试 DELETE FROM 代替无效的 DELETE * FROM。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2011-10-29
            • 2011-07-13
            • 2018-12-20
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-08-19
            相关资源
            最近更新 更多