sql >> Databasteknik >  >> RDS >> Mysql

MySQL - Hur tar man bort från tabell när kapslade urval använder den tabellen?

Du får förmodligen det här felet:

ERROR 1093 (HY000): You can't specify target table 'table_1' for update in FROM clause.

Du bör kunna göra detta med MySQL:s multipla-table DELETE syntax istället:

DELETE table_1.*
FROM   table_1,
       table_2,
       table_3
WHERE  table_1.id = table_2.table_1_id
AND    table_2.id = table_3.table_2_id
AND    table_3.id = 5

Ovanstående fråga borde fungera, men som en allmän regel skulle jag rekommendera att använda ANSI JOIN-syntax istället:

DELETE table_1.*
FROM   table_1
INNER JOIN table_2 on table_2.table_1_id = table_1.id
INNER JOIN table_3 on table_3.table_2_id = table_2.id
WHERE table_3.id = 5



  1. MySQL var INTE I namnmatrisen?

  2. Skapa tabell med PHP och fyll i från MySQL

  3. får syntaxfel vid skapande av funktion

  4. Kontrollera om det aktuella datumet ligger mellan två datum + mysql select-fråga