Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Usunąć, zaktualizować z tabelami pochodnymi?

Nie możesz bezpośrednio usunąć z podzapytania, ale nadal możesz go użyć, jeśli chcesz, wystarczy użyć go w JOIN :

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

Możesz też użyć IN :

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

Mając to na uwadze, w tym przykładzie nie wiem, dlaczego chcesz podzapytanie:

DELETE usrs WHERE name = 'John'

Edytuj na podstawie komentarzy. Aby usunąć z wielu tabel jednocześnie, możesz mieć kilka opcji DELETE oświadczenia lub możesz użyć czegoś takiego:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Czy wprowadzenie kluczy obcych do MySQL zmniejsza wydajność?

  2. Optymalne ustawienia MySQL dla zapytań dostarczających duże ilości danych?

  3. Automatyczna konwersja zapytania SQL na zapytanie ElasticSearch

  4. Błąd MySQL 1093 - Nie można określić tabeli docelowej do aktualizacji w klauzuli FROM

  5. Jak ustawić strefę czasową bazy danych w application.ini