2013-02-22 106 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