2010-01-01 6 views
2

Je suis un débutant à SQL. aidez s'il vous plaît avec ceci. J'ai le SQL ci-dessous qui met à jour une table pour company ticker = SUN d'une autre table qui a beaucoup d'enregistrements pour ticker 'SUN' et je dois utiliser un seul enregistrement correspondant 'Float'Instruction SQL - mise à jour sur deux tables

le travail ci-dessous fonctionne si je déclare ' SUN ', cependant, je veux le faire pour plus de 4000 symboles ticker. Comment fait-on ça?

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' 
société de table

ressemble -

Tick 
Float
yahoo table

ressemble Symbole Valeur categoty (une de la catégorie de valeur est ici FLOTTANT) mât de valeur (je mets à jour cette valeur dans le tableau de la société pour la catégorie de valeur = flotter

grâce

Répondre

2

Essayez ceci:

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

Jointures peut être utilisé dans la FROM une mise à jour, tant que vous ne mettez à jour une table.

+0

Merci cela a fonctionné comme un charme. Bonne année !! – Akhit

0

Cela mettra à jour la valeur o f Float pour toutes les lignes Company:

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 
) 

La sous-requête fait référence maintenant la requête externe pour obtenir le nom de symbole pour rechercher.

1

Cet ami est un travail pour la jointure de mise à jour.

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