Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

xóa mysql trong chế độ an toàn

Tìm kiếm xung quanh, câu trả lời phổ biến dường như là " chỉ cần tắt chế độ an toàn " :

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

Nếu thành thật mà nói, tôi không thể nói rằng mình đã từng tạo thói quen chạy ở chế độ an toàn. Tuy nhiên, tôi không hoàn toàn thoải mái với câu trả lời này vì nó chỉ giả định rằng bạn nên thay đổi cấu hình cơ sở dữ liệu của mình mỗi khi bạn gặp sự cố.

Vì vậy, truy vấn thứ hai của bạn gần với dấu hơn, nhưng lại gặp phải một vấn đề khác:MySQL áp dụng một số hạn chế cho các truy vấn con và một trong số đó là bạn không thể sửa đổi bảng trong khi chọn từ nó trong một truy vấn con.

Trích dẫn từ hướng dẫn sử dụng MySQL, Hạn chế về Truy vấn con :

Đó là chút cuối cùng là câu trả lời của bạn. Chọn các ID mục tiêu trong một bảng tạm thời, sau đó xóa bằng cách tham chiếu các ID trong bảng đó:

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

Bản trình diễn 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. Di chuyển Cơ sở dữ liệu Oracle sang MySQL trên AWS, Phần 1

  2. Truy vấn MySQL đệ quy?

  3. Cách cài đặt MySQL 8 trên Ubuntu 20.04 LTS

  4. Cách xóa các bản sao trong bảng MySQL

  5. Cách đọc và đặt lại AUTO_INCREMENT trong MySQL