sql >> Base de Datos >  >> RDS >> Mysql

¿Eliminar, actualizar con tablas derivadas?

No puede eliminar directamente de la subconsulta, pero aún puede usarlo si lo desea, solo tendrá que usarlo en un JOIN :

DELETE usrs
FROM usrs
    INNER JOIN (
        SELECT * FROM usrs WHERE name = 'john'
    ) t ON usrs.Id = t.Id

O podría usar IN :

DELETE usrs
WHERE ID IN (
   SELECT ID
   FROM usrs
   WHERE name = 'John'
)

Dicho esto, para este ejemplo, no sé por qué querrías una subconsulta:

DELETE usrs WHERE name = 'John'

Editar base en comentarios. Para eliminar de varias tablas al mismo tiempo, puede tener múltiples DELETE declaraciones, o puede usar algo como lo siguiente:

delete t1, t2, t3
from (select 'john' as usr) t
  left join t1 on t.usr=t1.usr
  left join t2 on t.usr=t2.usr
  left join t3 on t.usr=t3.usr