Partager via


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 :