Man*_*eUK 16 mysql sql select join sql-update
如何更新子查询中也存在的表?我需要分2个阶段吗?(创建一个临时表 - 将所选数据放入其中,然后更新最终表)
我正在尝试使用每个CTN的网络标签更新invoiceLine表.
最终结果将是:
invoiceLine
ctn       network
1234      network1
2345      network2
3456      network1
我有以下表格:
invoiceLine
ctn       network
1234      null
2345      null
3456      null
终奌站
ctn       network
1234      1
2345      2
3456      1
网络
id        label
1         network1
2         network2
我可以运行一个选择,但我不知道如何使用连接更新:
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'
Joe*_*lli 34
UPDATE invoiceLine
    INNER JOIN terminal
        ON invoiceLine.ctn = terminal.ctn
    INNER JOIN network
        ON terminal.network = network.id
    SET invoiceLine.network = network.label
UPDATE invoiceLine SET network = (
    SELECT label FROM network WHERE id = (
        SELECT network FROM terminal WHERE terminal.ctn = invoiceLine.ctn
    )
)
| 归档时间: | 
 | 
| 查看次数: | 26759 次 | 
| 最近记录: |