Insertion de lignes à l'aide des sous-requêtes INSERT et SELECT
Pour ajouter dans une table des valeurs provenant d'une ou de plusieurs autres tables ou vues, utilisez une sous-requête SELECT dans l'instruction INSERT. L'utilisation d'une sous-requête SELECT permet également d'insérer plusieurs lignes simultanément.
Dans l'exemple suivant, l'instruction INSERT insère dans une table distincte certaines données des lignes de la table Sales.SalesReason dans AdventureWorks2008R2 dont SalesReason est Marketing :
USE AdventureWorks2008R2;
GO
CREATE TABLE MySalesReason (
SalesReasonID int NOT NULL,
Name nvarchar(50),
ModifiedDate datetime);
GO
INSERT INTO MySalesReason
SELECT SalesReasonID, Name, ModifiedDate
FROM AdventureWorks2008R2.Sales.SalesReason
WHERE ReasonType = N'Marketing';
GO
SELECT SalesReasonID, Name, ModifiedDate
FROM MySalesReason;
GO
La liste de sélection de la sous-requête doit correspondre à la liste de colonnes de l'instruction INSERT. Si aucune liste de colonnes n'est spécifiée, la liste de sélection doit correspondre aux colonnes de la table ou de la vue dans laquelle elle est insérée.
Il existe une autre utilisation de l'instruction INSERT…SELECT qui consiste à insérer des données d'une source située à l'extérieur de SQL Server. La sous-requête SELECT dans l'instruction INSERT peut être utilisée pour les opérations suivantes :
Référencer une table distante ou un serveur lié au moyen d'un nom en quatre parties. Pour plus d'informations, consultez Identification d'une source de données à l'aide d'un nom de serveur lié.
Référencer une table distante au moyen de OPENROWSET. Pour plus d'informations, consultez Identification d'une source de données à l'aide d'un nom approprié.
Utiliser l'ensemble de résultats d'une requête exécutée sur un serveur distant. Pour plus d'informations, consultez Utilisation de requêtes directes comme des tables.