Mysql
 sql >> база данни >  >> RDS >> Mysql

mysql изтриване в безопасен режим

Търсейки в гугъл, популярният отговор изглежда е "просто изключете безопасен режим" :

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

Ако съм честен, не мога да кажа, че някога съм си имал навик да тичам в безопасен режим. Все пак не съм напълно удобен с този отговор, тъй като той просто предполага, че трябва да промените конфигурацията на базата си всеки път, когато срещнете проблем.

И така, втората ви заявка е по-близо до знака, но се сблъсква с друг проблем:MySQL прилага няколко ограничения към подзаявките и едно от тях е, че не можете да променяте таблица, докато избирате от нея в подзаявка.

Цитат от ръководството за MySQL, Ограничения за подзаявки :

Това последното нещо е вашият отговор. Изберете целеви идентификатори във временна таблица, след което изтрийте чрез препратка към идентификаторите в тази таблица:

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

SQLPiddle демонстрация .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да изтеглите подправена парола от базата данни и потребителя за удостоверяване?

  2. пребройте 10-те най-често срещани стойности в колона в mysql

  3. Добавете и свържете mysql библиотеки в cmakelist.txt

  4. Съхранение на шестнадесетични стойности като двоични в MySQL

  5. php mysql набор от символи:съхраняване на html на международно съдържание