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

MySQL DELETE FROM dengan subquery sebagai syarat

Untuk orang lain yang menemukan pertanyaan ini ingin dihapus saat menggunakan subquery, saya meninggalkan Anda contoh ini untuk mengakali MySQL (bahkan jika beberapa orang tampaknya berpikir itu tidak dapat dilakukan):

DELETE e.*
FROM tableE e
WHERE id IN (SELECT id
             FROM tableE
             WHERE arg = 1 AND foo = 'bar');

akan memberi Anda kesalahan:

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

Namun pertanyaan ini:

DELETE e.*
FROM tableE e
WHERE id IN (SELECT id
             FROM (SELECT id
                   FROM tableE
                   WHERE arg = 1 AND foo = 'bar') x);

akan bekerja dengan baik:

Query OK, 1 row affected (3.91 sec)

Bungkus subquery Anda dalam subquery tambahan (di sini bernama x) dan MySQL akan dengan senang hati melakukan apa yang Anda minta.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara memilih tanggal dari kolom datetime?

  2. Kiat Penyetelan Kinerja MySQL Untuk Mengoptimalkan Basis Data

  3. Ubah teks menjadi angka dalam kueri MySQL

  4. Cara Menggunakan Tampilan di Database MySQL

  5. 2 Cara Mengembalikan Baris yang Hanya Mengandung Karakter Non-Alfanumerik di MySQL