Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Excluir, atualizar com tabelas derivadas?


Você não pode excluir diretamente da subconsulta, mas ainda pode usá-la se quiser, só precisará usá-la em um JOIN :
DELETE usrs
FROM usrs
    INNER JOIN (
        SELECT * FROM usrs WHERE name = 'john'
    ) t ON usrs.Id = t.Id

Ou você pode usar IN :
DELETE usrs
WHERE ID IN (
   SELECT ID
   FROM usrs
   WHERE name = 'John'
)

Com isso dito, para este exemplo, não sei por que você deseja uma subconsulta:
DELETE usrs WHERE name = 'John'

Editar base em comentários. Para excluir de várias tabelas ao mesmo tempo, você pode ter vários DELETE declarações, ou você pode usar algo como o seguinte:
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