2013-02-22 13 views
7

Ho controllato le domande con risposta. Ma le soluzioni non funzionano per me.MYSQL - Elimina query con Join

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

Quando eseguo questa query, sto ricevendo il seguente errore in 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 

Mi sto stancando. Ho bisogno di aiuto. Grazie in anticipo.

risposta

16

Questo dovrebbe funzionare:

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

Sample Fiddle Demo

Penso che si può anche farlo con IN:

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

Grazie sgeddes. La prima risposta sta funzionando per me. – user2003356

+0

@ user2003356 - np, sono felice di potermi aiutare! – sgeddes

+1

meglio usare il primo perché non ci vorrà molto tempo per l'esecuzione, invece il secondo come è corretto, la prima cosa che accadrà è che la sezione 'in' verrà eseguita per prima e memorizzerà un risultato eseguendo poi il query primaria. –