2010-07-27 5 views
2

Pas encore bien avec SQL mais j'apprends.UPDATE colonne d'une autre colonne deux tables

J'ai donc 3 tables:

tblOne (Id, Type) tblTemp1 (Nom, Type) tblTemp2 (Id, Nom)

Fondamentalement, je veux mettre à jour tblOne où le où il est " Id 'correspond à tblTemp2, mais cela va aussi et récupère son' Type 'de tblTemp1 où le' Name 'correspond.

Quelqu'un peut-il aider?

Répondre

2

Je suggère d'utiliser des jointures dans votre instruction de mise à jour.

UPDATE tblOne 
SET tblOne.Type = tblTemp1.Type 
FROM tblTemp2 
INNER JOIN tblTemp1 ON tblTemp1.Name = tblTemp2.Name 
WHERE tblOne.Id = tblTemp2.Id 

http://msdn.microsoft.com/en-us/library/aa260662%28SQL.80%29.aspx

+1

est cette syntaxe est-elle correcte? Je n'ai jamais vu un JOIN effectué avant un set? (Ne pas choisir les trous, juste jamais vu cela auparavant) –

+0

Ouais pouvez-vous faire ça? – Scott

+0

Vous avez raison. C'est une syntaxe spécifique à MySQL. J'ai modifié le message pour utiliser la syntaxe Sql Server. –

0
UPDATE tblOne 
SET 
tblOne.Type = tblTemp1.Type 
WHERE 
tblOne.Id = tblTemp2.Id 
AND 
tblTemp1.Name = tblTemp2.Name; 
0
UPDATE TBLONE 
SET TBLONE.TYPE = (SELECT TBLTEMP1.TYPE 
         FROM TBLTEMP1 
          INNER JOIN TBLTEMP2 
            ON TBLTEMP1.NAME = TBLTEMP2.NAME 
         WHERE TBLONE.ID = TBLTEMP2.ID); 

Ff nous avons besoin de mettre à jour satisfait seulement une condition
Ensuite, ajoutez cette partie pour cette déclaration et lorsque l'état // où la clause est facultative

Questions connexes