使用另一个表中的结果更新一个表中的值

时间:2013-10-14 13:16:55

标签: mysql sql

好的我有两张桌子:

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

3 个答案:

答案 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
  

注意:内部联接应该只生成单个值