SQL INSERT INTO SELECTInstructions


Avec SQL, vous pouvez copier des informations d'une table à une autre.

L'instruction INSERT INTO SELECT copie les données d'une table et les insère dans une table existante.


Instruction SQL INSERT INTO SELECT

L'instruction INSERT INTO SELECT copie les données d'une table et les insère dans une table existante. Les lignes existantes dans la table cible ne seront pas affectées.

Syntaxe de l'instruction SQL INSERT INTO SELECT

Nous pouvons copier toutes les colonnes d'une table et les insérer dans une autre table existante :

INSERT INTO table2
SELECT * FROM table1;

Ou nous pouvons copier uniquement les colonnes spécifiées et les insérer dans une autre table existante :

INSERT INTO table2
(column_name(s))
SELECT column_name(s)
FROM table1;


Base de données de démonstration

Dans ce tutoriel, nous utiliserons la base de données d'exemple EXAMPLE.

Voici les données sélectionnées dans la table « Websites » :

+----+--------------+---------------------------+-------+---------+
| id | name         | url                       | alexa | country |
+----+--------------+---------------------------+-------+---------+
| 1  | Google       | https://www.google.cm/    | 1     | USA     |
| 2  | 淘宝          | https://www.taobao.com/   | 13    | CN      |
| 3  | Example      | http://www.example.com/    | 4689  | CN      |
| 4  | 微博          | http://weibo.com/         | 20    | CN      |
| 5  | Facebook     | https://www.facebook.com/ | 3     | USA     |
| 7  | stackoverflow | http://stackoverflow.com/ |   0 | IND     |
+----+---------------+---------------------------+-------+---------+

Voici les données de l'application "apps" :

mysql> SELECT * FROM apps;
+----+------------+-------------------------+---------+
| id | app_name   | url                     | country |
+----+------------+-------------------------+---------+
|  1 | QQ APP     | http://im.qq.com/       | CN      |
|  2 | 微博 APP | http://weibo.com/       | CN      |
|  3 | 淘宝 APP | https://www.taobao.com/ | CN      |
+----+------------+-------------------------+---------+
3 rows in set (0.00 sec)


Exemples SQL INSERT INTO SELECT

Copiez les données de "apps" et insérez-les dans "Websites" :

Exemple

INSERT INTO Websites (name, country)
SELECT app_name, country FROM apps;

Copiez uniquement les données avec id=1 dans "Websites" :

Exemple

INSERT INTO Websites (name, country)
SELECT app_name, country FROM apps
WHERE id=1;
Autres extensions