Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Löschen, Aktualisieren mit abgeleiteten Tabellen?

Sie können nicht direkt aus der Unterabfrage löschen, aber Sie können sie trotzdem verwenden, wenn Sie möchten, Sie müssen sie nur in einem JOIN verwenden :

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

Oder Sie könnten IN verwenden :

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

Nachdem dies gesagt wurde, weiß ich für dieses Beispiel nicht, warum Sie eine Unterabfrage benötigen:

DELETE usrs WHERE name = 'John'

Bearbeiten Sie basierend auf Kommentaren. Um aus mehreren Tabellen gleichzeitig zu löschen, können Sie entweder mehrere DELETE haben Anweisungen, oder Sie können etwas wie das Folgende verwenden:

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