2010-07-24 5 views
0

J'ai deux tables, une appelée pays et une appelée pays. Les pays ont des pays et des états, mais pas d'ISO pour les pays. La table de pays a les noms de pays avec ISO, mais pas d'états. J'essaie de faire un insert pour mettre à jour une nouvelle colonne ISO dans la table des pays et la remplir en fonction de la table des pays (en d'autres termes, déplacer l'ISO d'une table à l'autre).INSERT ... SELECT, OERE

Voici ce que j'ai:

INSERT countries (country_iso) SELECT country.iso FROM countries,country WHERE countries.name = country.printable_name 

Tout cela a fait, a été mis à la fin de la table des pays de l'ISO. Il n'a pas utilisé le WHERE countries.name = country.printable_name (qui sont les deux colonnes qui correspondent).

Des idées de ce que je fais mal?

Merci!

Répondre

2

INSERT crée de nouvelles lignes. Il semble que vous souhaitiez mettre à jour les lignes existantes à la place.

+0

lol .... bah, merci! – dzm

0

Vous devez exécuter une mise à jour, pas un insert:

UPDATE countries set country_iso = country.iso 
FROM countries INNER JOIN country on countries.name = country.printable_name 

Un insert crée de nouvelles lignes tandis qu'une mise à jour modifie les lignes existantes.

0

Que diriez-vous:

UPDATE countries,country SET countries.country_iso=country.iso WHERE countries.name=country.printable_name