以前的问题几乎都有我的答案:How to update from select with a Join
问题解决方案是:
UPDATE invoiceLine
INNER JOIN terminal
ON invoiceLine.ctn = terminal.ctn
INNER JOIN network
ON terminal.network = network.id
SET invoiceLine.network = network.label
我真正想要做的是将两个共享公共主键的表组合(永久存储Table1中的Table2数据)。表1有49个字段,而表2有104个字段。
如果我想更新超过100个字段怎么办?
我是否需要设置invoiceLine.network = network.label,invoiceLine.item1 = network.item1等...一直到invoiceLine.item103 = network.item103?
是否有更简单的方法来加入两个表并将其设置在数据库中?
SELECT *
FROM test2
INNER JOIN test1 ON test1.`API_ID` = test2.`API_ID`
这就是我想要的,除了它没有在test1中设置数据。
答案 0 :(得分:1)
是的,你必须,你也可以执行INSERT TO ... SELECT(选择可以是许多表的连接)但是你仍然必须定义你的字段,所以时间上几乎没有增益。重要的是:您需要在插入中使用与select中相同数量的字段。
INSERT INTO TABLE1 (list, of, fields) SELECT list, of, fields FROM TABLE2;