2011-01-20 22 views
5

Sé que hay más de una pregunta que coincida con esto, pero soy relativamente nuevo en mysql, y parece que no puedo hacer que esto funcione usando sub quests o la palabra clave USING, además, encuentro que el mysql on line docs es un completo misterio.No se puede obtener en mysql delete query to

empecé a tratar de construir mi consulta DELETE mediante una consulta SELECT como mi base y fue capaz de obtener todas las filas que quería suprimir:

select * 
from writings_tags_link 
join writing_tags on writing_tags.id = writings_tags_link.tag_id 
where writing_tags.tag = 'tag one' 

y luego acaba de reemplazar Seleccionar todo con BORRAR modo:

delete 
from writings_tags_link 
join writing_tags on writing_tags.id = writings_tags_link.tag_id 
where writing_tags.tag = 'tag one' 

deduzco por tanto el mensaje de error y de otros puestos similares que no se puede utilizar en 'ON' para unir tablas en una consulta de eliminación, usted tiene que utilizar uSO o una consulta sub. La consulta he construido con el uso de declaraciones de un error muy extraño, primero la consulta:

DELETE 
FROM writings_tags_link 
USING writing_tags_link INNER JOIN writing_tags 
WHERE writing_tags.id = writings_tags_link.tag_id 
AND writing_tags.tag ='tag one' 

error:

#1109 - Unknown table 'writings_tags_link' in MULTI DELETE 

Esta tabla existe, obviamente, mi consulta de selección originales vueltos los resultados deseados. ¡Cualquier ayuda/explicación sería muy apreciada!

Tenga en cuenta que solo intento eliminar los datos en la tabla de enlaces.

Respuesta

8

Su información es incorrecta sobre requiriendo el uso de la palabra clave en la sintaxis USING DELETE cuando se utiliza JOIN - la documentation provides examples in the multi-delete section:

DELETE wtl 
    FROM WRITINGS_TAGS_LINK wtl 
    JOIN WRITING_TAGS wt ON wt.id = wtl.tag_id 
WHERE wt.tag = 'tag one' 
+1

oh que veo, no añadió qué borrar! Como dije, estoy aprendiendo :) ¡Gracias, OMG Ponies! – JoeM05

+0

esto me ayudó en mi noobery también :) –