2017-09-08 3 views
2

J'ai 2 tableaux: Tableau A (ColA1, ColA2), Tableau B (ColB1, ColB2).Comment mettre à jour la colonne A2 de la table A (colA1, colA2) avec les données de B2 si la table B (colB1, colB2) a la valeur correspondante de la table A.?

ColA1 ColA2 |  ColB1  ColB2 
1    |  1   abc 
2    |  2   def 
4    |  3   ghi 
7    |  4   jkl 
       |  7   xxx 

Maintenant, je veux mettre à jour Col2 avec ColB2 où il a des valeurs correspondant à des ColA1 = ColB1. Ainsi, la sortie devrait être comme:

ColA1 ColA2 |  ColB1  ColB2 
1   abc |  1   abc 
2   def |  2   def 
4   jkl |  3   ghi 
7   xxx |  4   jkl 

Comment puis-je faire cela sans procédure?

Répondre

1

Oui, vous pouvez le faire avec un JOIN. Voici un exemple de quelque chose que je l'ai fait hier ...

update compress_test c 
join information_schema.tables t  
on c.table_schema = t.table_schema and c.table_name = t.table_name  
set c.compress_mb = Round((t.DATA_LENGTH+t.INDEX_LENGTH)/1024/1024) 

où t.table_schema = 'test'
et t.row_format = 'COMPRIMÉ';

si vous voulez quelque chose comme:

update a 
join b on a.cola = b.cola 
set a.colb = b.colb 
where a.colb is null 

Bien que je ne sais pas comment vous obtenez ces valeurs:

ColA1 ColA2 
4   jkl 
7   xxx 

Ils doivent encore être vide/null basée sur ce que vous demandiez .

+0

Dans ColA2, les valeurs sont les mêmes que ColB2 partout où les valeurs ColA1 et ColB1 correspondent. –

+0

travaillé pour moi après avoir enlevé où condition. Merci –