2010-10-19 18 views

Respuesta

11

En un BORRAR, puede enumerar las tablas después de la cláusula USING, de la que las filas no se eliminan (es decir, que solo forman parte de la cláusula WHERE). Por ejemplo:

DELETE FROM t1, t2 
    USING t1 
    INNER JOIN t2 
    INNER JOIN t3 
    WHERE t1.id=t2.id AND 
     t2.id=t3.id; 

Su ejemplo particular puede lograrse sin utilizar de esta manera:

DELETE l,s 
FROM l 
    INNER JOIN s 
    ON s.skill_id = l.id 
WHERE s.user_id = 3 
+0

En su primer ejemplo, se eliminarán las filas de 11 y t2. Esto parece contradecir su explicación ("puede listar tablas después de la cláusula USING, de la cual las filas ** ** se eliminan"). – klokop

0

La cláusula USING se utiliza para establecer los criterios de existencia de columnas de dos tablas en una combinación.

Por lo tanto, si tengo una sentencia como:

SELECT * from a 
JOIN b 
USING (c1,c2) 
... 

lo que sucederá es que el motor MySQL primero verificar que las columnas c1 y c2 existen en ambas tablas, y luego comparar los valores de las columnas para realizar la unión en las dos tablas.

Consulte la documentación de MySQL para JOIN Syntax.

+0

Eso es otro uso de la instrucción USING, pero no la que él está refiriendo a en su pregunta. –

+0

LOL wow Hoy estoy 0 por 2 al leer lo que OPs realmente están pidiendo ... –

0

Busque USING en la documentación de MySQL para DELETE. Es solo una sintaxis alternativa.

0

Sintaxis para USING declaración -

DELETE [LOW_PRIORITY] [QUICK] [IGNORE] 
    FROM tbl_name[.*] [, tbl_name[.*]] ... 
    USING table_references 
    [WHERE where_condition] 

para detallada visita información USING

+0

No, el uso de 'USING' en la pregunta es parte de la sintaxis DELETE de varias tablas. –

+0

Sí, actualicé mi código de acuerdo con eso. :) – Alpesh

Cuestiones relacionadas