我一直在尝试更新 SELECT 查询背后的数据,但没有做得太过分,所以我创建了一个新数据库,希望找到解决方案。
我有两个表:
table_a
和 table_b
table_a:
ID, item_to_match, new_value *(this is initially blank)*
table_b:
IDB, item_to_match, new_value *(the value I want to get into table_a)*
不知何故,我想用来自 table_b 的 new_value
更新 table_a 中的 new_value
- 但我似乎无法得到它(我是新手)。
我尝试创建一个 UPDATE 查询,但这只允许我显示两个表之一。所以我尝试创建一个主查询(称为 main
),认为我可以在其上创建一个 UPDATE 查询 - 但我也无法让它工作。语法如下:
SELECT
`table_a`.`new_value` AS `goingto`,
`table_b`.`new_value` AS `takenfrom`
FROM (`table_a`
JOIN `table_b`
ON ((`table_a`.`item_to_match` = `table_b`.`item_to_match`)))
我真的非常希望能就如何执行此操作提供更多指导(抱歉一直问)。
我现在已经尝试了三种变体,但一直收到相同的错误消息。但这里有一些变化:
UPDATE table_a, table_b
SET table_a.new_value = table_b.new_value
WHERE table_a.item_to_match = table_b.item_to_match
UPDATE table_a a
INNER JOIN table_b b ON a.item_to_match = b.item_to_match
SET a.new_value = b.new_value
UPDATE table_a a,table_b b
SET a.new_value = b.new_value
WHERE a.item_to_match = b.item_to_match
item_to_match
字段不是主键或索引 (FYI)...
我到底做错了什么???
我也刚试过:
UPDATE table_a a
JOIN table_b b
ON a.item_to_match = b.item_to_match
SET a.new_value = b.new_value
语法是否正确……我是不是在应用程序本身做错了什么?
最佳答案
这是你可以做到的
UPDATE table_a AS a
INNER JOIN table_b AS b ON a.item_to_match = b.item_to_match
SET a.new_value = b.new_value
关于mysql - 使用 SELECT 查询更新数据(有两个相关表),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23842313/