Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

MySQL - Bagaimana cara menghapus dari tabel saat pemilihan bersarang menggunakan tabel itu?

Anda mungkin mendapatkan kesalahan ini:

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

Anda seharusnya dapat melakukan ini menggunakan beberapa tabel MySQL DELETE sintaks sebagai gantinya:

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

Kueri di atas seharusnya berfungsi, tetapi sebagai aturan umum saya akan merekomendasikan menggunakan sintaks ANSI JOIN sebagai gantinya:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Buat tabel sementara dalam pernyataan SELECT tanpa CREATE TABLE terpisah

  2. prosedur tersimpan mysql:menggunakan vars yang dideklarasikan dalam pernyataan batas mengembalikan kesalahan

  3. Cara Mencadangkan Basis Data Terenkripsi dengan Server Percona untuk MySQL 8.0

  4. Bagaimana cara menyimpan hubungan dua arah dalam RDBMS seperti MySQL?

  5. Pilih semua baris kecuali satu di MySQL