Обновление с подзапросом самостоятельного соединения - PullRequest
0 голосов
/ 02 ноября 2018

Вопрос:

Руководитель (employee_id равен 114) вышел из компания, и сегодня последний день работы. С немедленным эффектом, отдел, которым он руководит, и все те сотрудники, которыми он руководит, будут захвачен его руководителем

Итак, мой синтаксис, который я придумал:

UPDATE EMPLOYEE
   SET supervisor_id = (SELECT supervisor_id
                          FROM EMPLOYEE
                         WHERE employee_id = '114'),
 WHERE supervisor_id = '114';

ВЫВОД: ОШИБКА 1093 (HY000): Вы не можете указать целевую таблицу 'EMPLOYEE' для обновления в предложении FROM

но это неправильно. Я знаю supervisor_id = 100, однако я не просто хочу поставить SET supervisor_id = 100, так как не совсем справедливо ставить 100 напрямую . Может кто-нибудь помочь мне исправить?

Ответы [ 2 ]

0 голосов
/ 02 ноября 2018

В MySQL вы не можете ссылаться на одну и ту же таблицу для INSERT/UPDATE/DELETE. Но вы можете использовать подзапрос здесь в качестве обходного пути. Попробуйте что-то вроде ниже ...

UPDATE EMPLOYEE 
   SET EMPLOYEE.supervisor_id = (SELECT supervisor_id
                                  FROM (SELECT * FROM EMPLOYEE) EmpFull
                                 WHERE employee_id = '114'),
 WHERE supervisor_id = '114';

Ссылка здесь

0 голосов
/ 02 ноября 2018
UPDATE EMPLOYEE a 
  join 
     ( SELECT supervisor_id
            , employee_id  
         FROM EMPLOYEE 
        WHERE employee_id = '114'
     ) b 
    on a.supervisor_id = b.employee_id 
   set a.supervisor_id = b.supervisor_id 

используйте этот запрос

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...