insérer une colonne d'une table à l'autre avec des contraintes
J'ai 2 tables: légende et temp. temp a un ID et l'ID de compte, selon la légende advent_id, account_id et d'autres colonnes. ID en temp et advent_id dans la légende sont similaires. account_id colonne est vide et je veux importer pertinentes account_id de temp à la légende. Je suis à l'utilisation de PostgreSQL.
Je suis en train d'essayer la requête suivante, mais il ne fonctionne pas comme je suis dans l'attente. De nouvelles lignes sont se créé et le account_id sont de l'ajout de nouvelles lignes, de ne pas le correspondant advent_id.
insert into legend(account_id)
select temp.account_id
from legend, temp
where legend.advent_id=temp.id;
C'est l'insertion de la account_id au mauvais endroit, de ne pas le correspondant advent_id.
J'utilise la requête suivante pour vérifier:
select advent_id, account_id from legend where account_id is not null;
Quel est exactement le problème dans ma requête d'insertion?
OriginalL'auteur Rahul Desai | 2012-06-06
Vous devez vous connecter pour publier un commentaire.
Si vous tentez de modifier les lignes existantes, plutôt que d'ajouter des lignes, alors vous avez besoin d'un
UPDATE
requête, pas unINSERT
requête.Il est possible d'utiliser les tables jointes comme la cible d'une
UPDATE
; dans votre exemple:JOIN
est assez critique ici - et je suppose que si tu voulais juste mettre à jour l'un particulieradvent_id
, vous pourriez faire quelque chose avec les sous-requêtesIl me donne une erreur: mise à jour legend_backup rejoindre temp set legend_backup.id_compte=temp.account_id où temp.id=legend_backup.advent_id; erreur: ERREUR de syntaxe sur ou près de "se joindre" à caractère 22 LIGNE 1: mise à jour legend_backup rejoindre temp set legend_backup.id_compte=...
Cette requête a fonctionné pour moi 🙂 pas sûr si son parfait bien que| mise à jour legend_backup ensemble id_compte=temp.account_id de temp où (temp.id=legend_backup.advent_id); La requête que j'utilise pour vérifier est de me donner un meilleur rendement. Suis-je sur la bonne voie?
J'ai modifié la vérification de la requête : select advent_id, account_id de legend_backup où account_id n'est pas nulle;
OriginalL'auteur gcbenison