sql >> Database teknologi >  >> RDS >> Mysql

Slet, opdater med afledte tabeller?

Du kan ikke slette direkte fra underforespørgslen, men du kan stadig bruge den, hvis du vil, du skal bare bruge den i en JOIN :

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

Eller du kan bruge IN :

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

Med dette sagt, for dette eksempel ved jeg ikke, hvorfor du vil have en underforespørgsel:

DELETE usrs WHERE name = 'John'

Rediger base på kommentarer. For at slette fra flere tabeller på samme tid kan du enten have flere DELETE udsagn, eller du kan bruge noget i stil med følgende:

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. Gem alle dataændringer med alle detaljer (som Stackoverflow)

  2. Opretter forbindelse til Microsoft Access i IRI Workbench

  3. Hvordan opretter man forbindelse til en ekstern MySQL-database via SSL ved hjælp af Play Framework?

  4. SELECT DISTINCT er langsommere end forventet på mit bord i PostgreSQL