sql >> Database teknologi >  >> RDS >> Mysql

mysql sletning i fejlsikret tilstand

Når man googler rundt, ser det populære svar ud til at være "deaktiver bare sikker tilstand" :

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

Hvis jeg skal være ærlig, kan jeg ikke sige, at jeg nogensinde har gjort det til en vane at løbe i sikker tilstand. Alligevel er jeg ikke helt fortrolig med dette svar, da det blot antager, at du skal ændre din databasekonfiguration, hver gang du støder på et problem.

Så din anden forespørgsel er tættere på mærket, men rammer et andet problem:MySQL anvender nogle få begrænsninger på underforespørgsler, og en af ​​dem er, at du ikke kan ændre en tabel, mens du vælger fra den i en underforespørgsel.

Citerer fra MySQL-manualen, Restrictions on Subqueries :

Det sidste er dit svar. Vælg mål-id'er i en midlertidig tabel, og slet derefter ved at henvise til id'erne i den tabel:

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

SQLFiddle-demo .



  1. Sådan får du optegnelser fra i dag i MySQL

  2. MySQL - hvordan man viser det seneste emne pr. tråd

  3. Sådan hentes data fra mysql-databasen

  4. 5 grunde til at vælge Arkware