mysql insert union_在MySQL中使用INSERT INTO SELECT和UNION执行多次插入
时间: 2024-05-09 11:16:39 浏览: 11
在 MySQL 中,可以使用 INSERT INTO SELECT 和 UNION 这两种方法执行多次插入操作。
1. 使用 INSERT INTO SELECT
INSERT INTO SELECT 语句用于将一张表的数据插入到另一张表中。可以使用这个语句来多次插入数据,只需要编写多个 SELECT 语句并使用 UNION ALL 连接起来。
例如,假设我们有一个名为 orders 的表,其中包含以下数据:
| id | customer_id | order_date |
|----|-------------|------------|
| 1 | 1001 | 2020-01-01 |
| 2 | 1002 | 2020-01-02 |
| 3 | 1003 | 2020-01-03 |
现在,我们想将这些订单数据插入到一个名为 all_orders 的新表中。我们可以使用以下 INSERT INTO SELECT 语句:
```
INSERT INTO all_orders (customer_id, order_date)
SELECT customer_id, order_date FROM orders WHERE id = 1
UNION ALL
SELECT customer_id, order_date FROM orders WHERE id = 2
UNION ALL
SELECT customer_id, order_date FROM orders WHERE id = 3;
```
这个语句将会把 orders 表中 id 为 1、2 和 3 的订单数据插入到 all_orders 表中。
2. 使用 UNION
UNION 语句用于将两个或多个 SELECT 语句的结果合并成一个结果集。可以使用这个语句来多次插入数据,只需要编写多个 SELECT 语句并使用 UNION ALL 连接起来。
例如,假设我们有一个名为 customers 的表,其中包含以下数据:
| id | name |
|----|-----------|
| 1 | Alice |
| 2 | Bob |
| 3 | Charlie |
现在,我们想将这些客户数据插入到一个名为 all_customers 的新表中。我们可以使用以下 UNION 语句:
```
INSERT INTO all_customers (name)
SELECT name FROM customers WHERE id = 1
UNION ALL
SELECT name FROM customers WHERE id = 2
UNION ALL
SELECT name FROM customers WHERE id = 3;
```
这个语句将会把 customers 表中 id 为 1、2 和 3 的客户数据插入到 all_customers 表中。注意,我们只选择了一个列,因为 all_customers 表只有一个列。如果 all_customers 表有多个列,那么我们需要在每个 SELECT 语句中选择相同的列,并确保它们的数据类型相同。