如何使用加入从选择中更新
Posted
技术标签:
【中文标题】如何使用加入从选择中更新【英文标题】:How to update from select with a Join 【发布时间】:2011-12-16 12:02:36 【问题描述】:如何更新子查询中也存在的表?我必须分2个阶段完成吗? (创建一个临时表 - 将选定的数据放入其中,然后更新最终表)
我正在尝试使用每个 CTN 的网络标签更新 invoiceLine 表。
最终结果是:
发票行
ctn network
1234 network1
2345 network2
3456 network1
我有以下表格:
发票行
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' 进行更新
【问题讨论】:
How to use JOIN in UPDATE query?的可能重复 【参考方案1】:UPDATE invoiceLine SET network = (
SELECT label FROM network WHERE id = (
SELECT network FROM terminal WHERE terminal.ctn = invoiceLine.ctn
)
)
【讨论】:
【参考方案2】:UPDATE invoiceLine
INNER JOIN terminal
ON invoiceLine.ctn = terminal.ctn
INNER JOIN network
ON terminal.network = network.id
SET invoiceLine.network = network.label
【讨论】:
工作愉快...谢谢 :-) - 将在 6 分钟内接受您的回答,当我允许的时候! 而 WHERE 和 LIMIT 关键字将放在 SET 关键字之后。以上是关于如何使用加入从选择中更新的主要内容,如果未能解决你的问题,请参考以下文章
从 DropdownItems 中选择值后,DropdownButton 值未更新。如何使用 selectedValue 更新默认值?
如何使用 PHP(和 HTML)从 SQLite 中选择、插入、更新和删除数据
如何使用从 Swift 3 中的滑块中选择的 JSON 数据更新 tableviewcell?