可以SELECT但不能删除

时间:2011-08-18 21:22:28

标签: mysql join subquery sql-delete

我在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...

非常感谢任何帮助。

4 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:2)

是的,你应该使用

delete from table1

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

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

答案 2 :(得分:1)

放弃*。 DELETE是一种全有或全无的动作。

答案 3 :(得分:1)

尝试DELETE FROM而不是DELETE * FROM,这是无效的。