2010-01-01 81 views
2

我是SQL的新手。请帮忙。 我有下面的SQL更新公司股票=来自另一个表,有很多记录“太阳报”,我只需要使用一个记录匹配'浮动'表的一个表SQL语句 - 更新两个表

下面的工作,如果我说'太阳',但是,我想为4000+股票代码做这个。我该怎么做?

UPDATE dbo.Company 
SET dbo.Company.[Float] = 
    (SELECT dbo.yahoo.[Value Mast] 
      FROM dbo.yahoo 
      WHERE dbo.yahoo.[Value Category]= 'Float' and dbo.yahoo.symbol = 'SUN') 
Where dbo.Company.tick = 'SUN' 

表公司看起来像 -

Tick 
Float

表雅虎看起来像 符号 价值categoty 值MAST(我更新的运营商表这个值(这里FLOAT价值范畴之一) for value category = float

谢谢

回答

2

试试这个:

UPDATE Company 
SET [Float] = yahoo.[Value Mast] 
FROM 
    yahoo 
    INNER JOIN Company ON yahoo.symbol = Company.tick 
WHERE 
    yahoo.[Value Category]= 'Float' 

加入可以在UPDATE的FROM语句中使用,只要你只能更新一个表。

+0

感谢它的工作就像一个魅力。 新年快乐! – Akhit 2010-01-01 23:43:57

0

这将更新值o如欲在Company所有行Float

UPDATE 
    dbo.Company 
SET 
    dbo.Company.[Float] = (
    SELECT 
     dbo.yahoo.[Value Mast] 
    FROM 
     dbo.yahoo 
    WHERE 
     dbo.yahoo.[Value Category] = 'Float' 
     AND dbo.yahoo.symbol = dbo.Company.tick 
) 

现在的子查询引用外部查询来获取符号名称查找。

1

这是我的朋友是更新连接的工作。

update company set [float] = y.[value mast] 
from 
    company c 
    inner join yahoo y 
     on y.symbol = c.tick 
     and y.[value category] = 'float'