一、概述
MySQL Insert Select語句用於將一個表的數據插入到另一個表中,同時還可以進行一些過濾和轉換。其語法如下:
INSERT INTO table1 (col1, col2, ..., coln) SELECT col1, col2, ..., coln FROM table2 WHERE condition;
其中,table1是目標表,table2是源表,col1~coln是目標表和源表中要插入或篩選的列名,condition是篩選條件。
二、實例操作
1、插入部分數據
我們可以從一個表中選擇一部分數據,只將這些數據插入到另一個表中。以下是一個簡單的例子:
INSERT INTO orders_new (customer, order_date, amount) SELECT customer, order_date, amount FROM orders WHERE order_date >= '2019-10-01';
在上面的例子中,我們從orders表中選擇了2019年10月1日以後的所有訂單,只將這些訂單的客戶、訂單日期和金額插入到orders_new表中。
2、插入特定行
我們可以根據特定的條件,只將符合條件的數據行插入到目標表中。以下是一個示例,將學生表中成績大於等於80分的學生插入到優秀學生表中:
INSERT INTO excellent_stu (stu_id, stu_name, score) SELECT stu_id, stu_name, score FROM student WHERE score >= 80;
3、將數據插入到已存在的表中
在MySQL中,我們可以將數據插入到已經存在的表中,以便於將數據合併到一起。以下是一個示例:
INSERT INTO employee (id, name, age) SELECT id, name, age FROM employee_temp WHERE age >= 25;
在上面的示例中,我們將employee_temp表中年齡大於等於25歲的員工信息插入到已存在的employee表中。
4、插入默認值
我們可以通過SELECT語句中指定默認值來大量插入數據,以下是一個示例:
INSERT INTO test (id, name, age, address) SELECT 0, 'Alice', 25, '' FROM DUAL UNION ALL SELECT 0, 'Bob', 30, '' FROM DUAL;
在上面的示例中,我們向test表中插入兩個默認地址為空的用戶信息。
5、修改插入數據
我們可以使用SELECT語句來改變要插入的值,以下是一個示例,將用戶的收入加倍再插入到目標表中:
INSERT INTO customers_new (customer_name, contact_name, phone) SELECT customer_name, contact_name, phone*2 FROM customers;
三、總結
MySQL Insert Select語句可以讓我們以各種方式將兩個或多個表中的數據合併在一起,非常靈活和方便。我們可以根據自己的需要隨意插入、過濾、修改數據,大大豐富了MySQL的數據處理功能。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/303475.html