Vous ne pouvez pas supprimer directement de la sous-requête, mais vous pouvez toujours l'utiliser si vous le souhaitez, vous aurez juste besoin de l'utiliser dans un JOIN
:
DELETE usrs
FROM usrs
INNER JOIN (
SELECT * FROM usrs WHERE name = 'john'
) t ON usrs.Id = t.Id
Ou vous pouvez utiliser IN
:
DELETE usrs
WHERE ID IN (
SELECT ID
FROM usrs
WHERE name = 'John'
)
Cela dit, pour cet exemple, je ne sais pas pourquoi vous voudriez une sous-requête :
DELETE usrs WHERE name = 'John'
Modifier la base sur les commentaires. Pour supprimer de plusieurs tables en même temps, vous pouvez soit avoir plusieurs DELETE
déclarations, ou vous pouvez utiliser quelque chose comme ce qui suit :
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