sql >> Databasteknik >  >> RDS >> Mysql

Ta bort, uppdatera med härledda tabeller?

Du kan inte ta bort direkt från underfrågan, men du kan fortfarande använda den om du vill, du behöver bara använda den i en JOIN :

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

Eller så kan du använda IN :

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

Med detta sagt, för det här exemplet vet jag inte varför du vill ha en underfråga:

DELETE usrs WHERE name = 'John'

Redigera baserat på kommentarer. För att radera från flera tabeller samtidigt kan du antingen ha flera DELETE uttalanden, eller så kan du använda något i stil med följande:

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


  1. Hur man väljer kolumnnamn dynamiskt i mySQL

  2. Java PreparedStatement klagar på SQL-syntax på execute()

  3. Hur man listar tabeller som påverkas av kaskadradering

  4. Hur ställer man in tabellnamn i dynamisk SQL-fråga?