sql >> Databáze >  >> RDS >> Mysql

Smazat, aktualizovat pomocí odvozených tabulek?

Z dílčího dotazu nelze přímo odstranit, ale stále jej můžete použít, pokud chcete, stačí jej použít v JOIN :

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

Nebo můžete použít IN :

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

V tomto příkladu nevím, proč byste chtěli poddotaz:

DELETE usrs WHERE name = 'John'

Upravit základ komentáře. Chcete-li smazat z více tabulek současně, můžete použít více DELETE příkazy, nebo můžete použít něco jako následující:

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. Proč se NULL =NULL na serveru SQL vyhodnotí jako nepravda

  2. Vysvětlení SQL Server (localdb)\v11.0

  3. Co je index v SQL?

  4. Bývalý výkonný ředitel Capgemini, Sunitha Ray, se připojil k ScaleGrid DBaaS, aby rozšířil podnikový prodej