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;






