好的我有两张桌子:
holdings: (id, long_name, value, date, sedol)
asset_key: (id, long_name, sedol)
我的问题是,在holdings
中有许多记录未填写sedol
。我有asset_key
表但是将给定的long_name
映射到sedol
。
是否有可以使用holdings.sedol
的结果填充asset_key
的查询?
类似的东西:
UPDATE holdings SET holdings.sedol =
SELECT asset_key.sedol FROM asset_key
WHERE sedol.long_name = asset_key.long_name
答案 0 :(得分:1)
这样可以解决问题:
UPDATE
holdings
LEFT JOIN asset_key ON sedol.long_name = asset_key.long_name
SET
holdings.sedol=asset_key.sedol
答案 1 :(得分:1)
这应该有效:
UPDATE `holdings`
SET `holdings`.`sedol` = (SELECT `asset_key`.`sedol`
FROM `asset_key`
WHERE `asset_key`.`long_name` = `holdings`.`long_name`)
但是,如果我没有错,你应该确定这个SELECT
子查询只返回一行,否则MySQL会抛出错误。
答案 2 :(得分:0)
尝试以下查询:
update holdings
SET holdings.sedol = asset_key.sedol
from holdings
inner join asset_key on sedol.long_name = asset_key.long_name
注意:内部联接应该只生成单个值