2010-08-04 18 views
6

puedo usarmysql delete on join?

select * from sent_txts s 
LEFT JOIN received_txts r ON s.msg_link_id = r.id 
WHERE r.action_id = 6; 

superior seleccionar filas coincidentes,

¿Cómo puedo escribir una consulta para eliminar las filas coincidentes en ambos lados?

Algo así como

delete sent_txts s 
LEFT JOIN received_txts r ON s.msg_link_id = r.id 
WHERE r.action_id = 6; 

Respuesta

5

de responsabilidad: No tengo acceso a una base de datos MySQL para poner a prueba en este momento, pero creo que se puede utilizar:

delete s, r from send_txts s left join received_txts r on s.msg_link_id = r.id where r.action_id = 6; 

Sede de MySQL documentación delete para obtener más información. Un mejor método podría ser enviar una restricción de clave externa de received_txts a enviado, y poner en cascada la eliminación.

3

Personalmente prefiero la cláusula USING, pero la respuesta anterior es igualmente válida. En segundo lugar la sugerencia de considerar el uso de una restricción de clave externa, es una forma mucho más eficiente de lograr esto.

DELETE FROM s, r USING sent_txts s LEFT JOIN received_txts r ON s.msg_link_id = r.id WHERE r.action_id = 6;