2013-02-22 110 views
7

我已查看回答的問題。但是,解決方案並不適合我。MYSQL - 刪除加入查詢

DELETE FROM TEST2 
INNER JOIN TEST1 on TEST1.FIELD2 = TEST2.FIELD2 
WHERE TEST1.FIELD1 = 22; 

當我執行此查詢時,我在phpmyadmin中出現以下錯誤。

#1064 - 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 'INNER JOIN TEST1 on TEST1.FIELD2 = TEST2.FIELD2' at line 2 

我越來越累。我需要幫助。提前致謝。

回答

16

這應該工作:

DELETE T 
FROM TEST2 T 
INNER JOIN TEST1 on TEST1.FIELD2 = T.FIELD2 
WHERE TEST1.FIELD1 = 22; 

Sample Fiddle Demo

我想你也可以用IN做到這一點:

DELETE FROM Test2 
WHERE Field2 IN (
    SELECT Field2 
    FROM Test1 
    WHERE Field1 = 22) 
+0

感謝sgeddes。第一個答案是爲我工作。 – user2003356 2013-02-22 14:32:50

+0

@ user2003356 - np,很高興能幫到你! – sgeddes 2013-02-22 14:33:14

+1

更好地使用第一個,因爲它不會花費太多時間來執行,而第二個是正確的,第一件事會發生的是'in'部分將首先執行並存儲結果,然後執行主要查詢。 – 2015-02-19 11:34:36