MySQL INSERT INTO SELECT
L’instruction INSERT INTO SELECT copie les données d’une table et les insère dans une autre table.
- La table source et cible doivent avoir le même type de données.
- Les enregistrements existants dans la table cible ne sont pas affectés.
Syntaxe:
La syntaxe suivante, copier toutes les colonnes de la table t1 vers la table t2.
INSERT INTO t2 SELECT * FROM t1 WHERE condition;
La syntaxe suivante, copier seulement les colonnes sélectionnées de la table t1 vers la table t2.
INSERT INTO t2 (colonne1, colonne2, colonne3, …) SELECT colonne1, colonne2, colonne3, … FROM t1 WHERE condition;
Exemple :
Supposons que nous ayons la table des fournisseurs suivante avec la structure suivante.
CREATE TABLE fournisseurs ( id INT AUTO_INCREMENT, nom VARCHAR(50) NOT NULL, tel VARCHAR(50), adresse VARCHAR(50), pays VARCHAR(50), client_id INT, PRIMARY KEY (id) );
Maintenant, nous allons remplir la table des fournisseurs à partir de la table Clients.
INSERT INTO fournisseurs ( nom, tel, adresse, pays, client_id ) SELECT nom, tel, adresse, pays, client_id FROM clients;
La requête suivante copie uniquement les clients de la France dans la table « fournisseurs ».
INSERT INTO fournisseurs ( nom, tel, adresse, pays, client_id ) SELECT nom, tel, adresse, email, client_id FROM clients; WHERE pays = 'FR';
Après avoir inséré les données à l’aide de la requête INSERT INTO SELECT, la requête suivante renvoie les données de la table fournisseurs.
SELECT * FROM fournisseurs;