Mysql
 sql >> Baza danych >  >> RDS >> Mysql

mysql usuń w trybie awaryjnym

Googlując, popularną odpowiedzią wydaje się być "po prostu wyłącz tryb awaryjny" :

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

Jeśli mam być szczery, nie mogę powiedzieć, że kiedykolwiek wyrobiłem sobie nawyk biegania w trybie awaryjnym. Mimo to nie jestem do końca zadowolony z tej odpowiedzi, ponieważ zakłada ona, że ​​powinieneś zmienić konfigurację bazy danych za każdym razem, gdy napotkasz problem.

Tak więc twoje drugie zapytanie jest bliżej celu, ale napotyka inny problem:MySQL nakłada kilka ograniczeń na podzapytania, a jednym z nich jest to, że nie możesz modyfikować tabeli podczas wybierania z niej w podzapytaniu.

Cytując z podręcznika MySQL, Ograniczenia dotyczące podzapytań :

Ta ostatnia część jest twoją odpowiedzią. Wybierz identyfikatory docelowe w tabeli tymczasowej, a następnie usuń, odwołując się do identyfikatorów w tej tabeli:

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. Użyj relacyjnych baz danych MySQL w systemie Ubuntu 10.10 (Maverick)

  2. Jak wyłączyć buforowanie SQLAlchemy?

  3. Jak zabezpieczyć MySQL:część druga

  4. Co jest przeciwieństwem GROUP_CONCAT w MySQL?

  5. Data i godzina za godzinę po wstawieniu. Czas letni