Как обновить из select с Join

Как обновить таблицу, которая также присутствует в подзапросе? Нужно ли делать это в 2 этапа? (создать временную таблицу - поместить в нее выбранные данные, а затем обновить итоговую таблицу)

Я пытаюсь обновить таблицу invoiceLine с меткой сети для каждой CTN.

Конечный результат должен быть следующим:

  • invoiceLine

    ctn network
    1234 сеть1
    2345 сеть2
    3456 сеть1
    

У меня есть следующие таблицы:

  • invoiceLine

    ctn network
    1234 null
    2345 ноль
    3456 null
    
  • terminal

    ctn network
    1234 1
    2345 2
    3456 1
    
  • сеть

    id label
    1 сеть1
    2 сеть2
    

Я могу выполнить select, но я не уверен, как обновить с помощью join:

update invoiceLine 
inner join terminal on terminal.ctn = invoiceLine.ctn 
set invoiceLine.network = 
(
  select network.label 
  from invoiceLine 
  inner join terminal on terminal.ctn = invoiceLine.ctn 
  inner join network on network.id = terminal.network
) 
where invoiceLine.ctn = terminal.ctn

но MySQL выбрасывает

Код ошибки: 1093. Вы не можете указать целевую таблицу 'invoiceLine' для обновления в предложении FROM

16
задан Salman A 25 July 2019 в 20:35
поделиться