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

mysql hapus dalam mode aman

Googling, jawaban yang populer tampaknya adalah "matikan saja mode aman" :

SET SQL_SAFE_UPDATES = 0;
DELETE FROM instructor WHERE salary BETWEEN 13000 AND 15000;
SET SQL_SAFE_UPDATES = 1;

Jika boleh jujur, saya tidak bisa mengatakan bahwa saya pernah membuat kebiasaan berlari dalam mode aman. Namun, saya tidak sepenuhnya nyaman dengan jawaban ini karena hanya mengasumsikan Anda harus mengubah konfigurasi database Anda setiap kali Anda mengalami masalah.

Jadi, kueri kedua Anda mendekati sasaran, tetapi menghadapi masalah lain:MySQL menerapkan beberapa batasan pada subkueri, dan salah satunya adalah Anda tidak dapat mengubah tabel saat memilih darinya dalam subkueri.

Mengutip dari manual MySQL, Pembatasan Subquery :

Bagian terakhir itu adalah jawaban Anda. Pilih ID target di tabel sementara, lalu hapus dengan merujuk ID di tabel itu:

DELETE FROM instructor WHERE id IN (
  SELECT temp.id FROM (
    SELECT id FROM instructor WHERE salary BETWEEN 13000 AND 15000
  ) AS temp
);

Demo SQLFiddle .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL - Mac - Kesalahan 2002 - Tidak dapat terhubung ke lokal... melalui soket

  2. Pencarian teks lengkap dengan InnoDB di MySQL

  3. Sistem pengaturan ulang kata sandi di PHP

  4. mySQL - Masukkan ke dalam tiga tabel

  5. MySQL Tampilkan Pengguna