У меня есть инструктор таблицы, и я хочу, чтобы удалить записи, которые имеют зарплату в диапазоне интуитивным способом, как это:MySQL удалить при безопасном режиме
delete from instructor where salary between 13000 and 15000;
Однако, в безопасном режиме, я не могу удалить запись без предоставления первичного ключа (ID).
Итак, я пишу следующий SQL:
delete from instructor where ID in (select ID from instructor where salary between 13000 and 15000);
Однако, есть ошибка:
You can't specify target table 'instructor' for update in FROM clause
Я смущен, потому что, когда я пишу
select * from instructor where ID in (select ID from instructor where salary between 13000 and 15000);
он не производит ошибка.
Мой вопрос:
- что делает это сообщение об ошибке на самом деле означает, и почему мой код не так?
- как переписать этот код, чтобы заставить его работать в безопасном режиме?
Спасибо!
вы хотите сохранить безопасный режим на? и вы используете mySql workbench? – wribit
Ответ на оба вопроса: да. И я удивлен, что, когда я использовал jdbc для удаления записей в базах mysql без ПК, он не вызывает ошибку. Таким образом, безопасный режим предназначен только для workbench mysql? –
no - Я спрашивал, потому что если вы хотите отключить его в workbench mySQL, я мог бы рассказать вам, как это сделать. Лично я работаю с этим ... иметь идентификаторы - это большая безопасность - но развитие мудрое, я нашел, что это боль – wribit