Je souhaite copier des données d'une colonne vers une autre colonne d'une autre table. Comment puis je faire ça?
J'ai essayé ce qui suit:
Update tblindiantime Set CountryName =(Select contacts.BusinessCountry From contacts)
Mais cela n'a pas fonctionné.
Je veux copier la colonne "BusinessCountry" de la table de contact dans la colonne "CountryName" de la table tblindiantime.
Réponses:
Dans SQL Server 2008, vous pouvez utiliser une mise à jour multi-table comme suit:
UPDATE tblindiantime SET tblindiantime.CountryName = contacts.BusinessCountry FROM tblindiantime JOIN contacts ON -- join condition here
Vous avez besoin d'une condition de jointure pour spécifier la ligne à mettre à jour.
Si la table cible est actuellement vide, vous devez utiliser un INSERT à la place:
INSERT INTO tblindiantime (CountryName) SELECT BusinessCountry FROM contacts
la source
Voici la requête:
Même tableau:
UPDATE table_name SET column1 = column2
Table différente:
UPDATE table_name1 SET column1 = ( SELECT column2 FROM table_name2 WHERE table_name1.id = table_name2.id );
la source
Tableau2.Colonne2 => Tableau1.Colonne1
Je me rends compte que cette question est ancienne mais la réponse acceptée n'a pas fonctionné pour moi. Pour les futurs googleurs, c'est ce qui a fonctionné pour moi:
UPDATE table1 SET column1 = ( SELECT column2 FROM table2 WHERE table2.id = table1.id );
Par lequel:
la source
[Michael Pakhantsov]
J'espère que vous avez le champ clé est de deux tables.
UPDATE tblindiantime t SET CountryName = (SELECT c.BusinessCountry FROM contacts c WHERE c.Key = t.Key )
la source
ORA-01427: single-row subquery returns more than one row
si la sélection renvoie plus d'une ligne, que faire si je veux sélectionner plus d'une ligne et mettre à jour la colonne avec ces valeurs?WHERE
. Par exemple, si tblindiantime a fieldContactID
, qui est leID
de la ligne danscontacts
laquelle appartient à chaque ligne dans tblindiantime, alors vous utiliserezWHERE tblindiantime.ContactID=contacts.ID
. Voir la réponse de cedrikdlb pour une autre variante.La réponse à une question similaire a fonctionné plus correctement pour moi que la réponse sélectionnée à cette question (par Mark Byers). En utilisant la réponse de Mark, ma colonne mise à jour a la même valeur dans toutes les lignes (peut-être la valeur de la première ligne qui correspond à la jointure). L'utilisation de la réponse de ParveenaArora de l'autre thread a mis à jour la colonne avec les valeurs correctes.
En transformant la solution de Parveena pour utiliser les noms de table et de colonne de cette question, la requête serait la suivante (où je suppose que les tables sont liées via tblindiantime.contact_id):
UPDATE tblindiantime SET CountryName = contacts.BusinessCountry FROM contacts WHERE tblindiantime.contact_id = contacts.id;
la source
Je pense que toutes les réponses précédentes sont correctes, ce code ci-dessous est très valide spécialement si vous devez mettre à jour plusieurs lignes à la fois, notez: c'est PL / SQL
DECLARE CURSOR myCursor IS Select contacts.BusinessCountry From contacts c WHERE c.Key = t.Key; --------------------------------------------------------------------- BEGIN FOR resultValue IN myCursor LOOP Update tblindiantime t Set CountryName=resultValue.BusinessCountry where t.key=resultValue.key; END LOOP; END;
Je souhaite que cela puisse aider.
la source
C'est désormais plus simple avec Management Studio 2016.
Utilisation de SQL Server Management Studio
Pour copier des données d'une table à une autre
1.Ouvrez la table avec les colonnes que vous souhaitez copier et celle dans laquelle vous souhaitez copier en cliquant avec le bouton droit sur les tables, puis en cliquant sur Conception .
2.Cliquez sur l'onglet du tableau contenant les colonnes que vous souhaitez copier et sélectionnez ces colonnes.
3.Dans le menu Edition , cliquez sur Copier .
4.Ouvrez une nouvelle fenêtre de l'éditeur de requête.
5. Cliquez avec le bouton droit sur l'éditeur de requête, puis cliquez sur Requête de conception dans l'éditeur .
6.Dans la boîte de dialogue Ajouter une table , sélectionnez la table source et de destination, cliquez sur Ajouter , puis fermez la boîte de dialogue Ajouter une table .
7. Cliquez avec le bouton droit sur une zone ouverte de l'éditeur de requête, pointez sur Modifier le type et puis cliquez sur Insérer les résultats .
8.Dans la boîte de dialogue Choisir la table cible pour les résultats d'insertion , sélectionnez la table de destination.
9.Dans la partie supérieure du Concepteur de requêtes, cliquez sur la colonne source dans la table source.
10.Le concepteur de requêtes a maintenant créé une requête INSERT. Cliquez sur OK pour placer la requête dans la fenêtre de l'éditeur de requête d'origine.
11.Exécutez la requête pour insérer les données de la table source dans la table de destination.
Pour plus d'informations https://docs.microsoft.com/en-us/sql/relational-databases/tables/copy-columns-from-one-table-to-another-database-engine
la source
Il peut être résolu en utilisant un attribut différent.
la source