2011-08-18 94 views
0

我很難從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... 

任何幫助是極大的讚賞。

回答

3

DELETE之後刪除*。您通常不會刪除單個列,而是刪除整行。

+0

哇。這麼多時間花在了這樣一個愚蠢的錯誤上。謝謝大家! – leadingzero

1

刪除*。 DELETE是一種全部或沒有的行爲。

1

嘗試刪除FROM而不是DELETE * FROM,這是無效的。

2

是的,你應該使用

delete from table1 

或者如果在查詢的多個表,你需要輸入你想從刪除的表的名稱。

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