如何更新子查询中也存在的表?我必须分两个阶段进行吗?(创建一个临时表-将选定的数据放入其中,然后更新最终表)
我正在尝试使用每个CTN的网络标签更新invoiceLine表。
最终结果将是:
ctn network 1234 network1 2345 network2 3456 network1
我有以下表格:
invoiceLine
ctn network 1234 null 2345 null 3456 null
terminal
ctn network 1234 1 2345 2 3456 1
network
id label 1 network1 2 network2
我可以运行一个select,但是我不确定如何通过联接进行更新:
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。您无法在FROM子句中指定目标表’invoiceLine’进行更新
UPDATE invoiceLine INNER JOIN terminal ON invoiceLine.ctn = terminal.ctn INNER JOIN network ON terminal.network = network.id SET invoiceLine.network = network.label