Cercando su Google, la risposta popolare sembra essere "Disattiva la modalità provvisoria" :
SET SQL_SAFE_UPDATES = 0;
DELETE FROM instructor WHERE salary BETWEEN 13000 AND 15000;
SET SQL_SAFE_UPDATES = 1;
Se devo essere onesto, non posso dire di aver mai preso l'abitudine di correre in modalità provvisoria. Tuttavia, non sono del tutto a mio agio con questa risposta poiché presuppone solo che dovresti cambiare la configurazione del tuo database ogni volta che incontri un problema.
Quindi, la tua seconda query è più vicina al bersaglio, ma incontra un altro problema:MySQL applica alcune restrizioni alle sottoquery e una di queste è che non puoi modificare una tabella mentre selezioni da essa in una sottoquery.
Citando il manuale MySQL, Restrizioni sulle sottoquery :
Quest'ultimo pezzo è la tua risposta. Seleziona gli ID target in una tabella temporanea, quindi elimina facendo riferimento agli ID in quella tabella:
DELETE FROM instructor WHERE id IN (
SELECT temp.id FROM (
SELECT id FROM instructor WHERE salary BETWEEN 13000 AND 15000
) AS temp
);