📜  mysql 从 select 中插入 - SQL (1)

📅  最后修改于: 2023-12-03 15:33:02.823000             🧑  作者: Mango

MySQL 从 SELECT 中插入 - SQL

在MySQL中,您可以利用SELECT语句的结果来插入数据到另一个表中。这个过程适用于需要将查询结果保存到一个新的表中,或是合并两个或多个表的内容。

语法

以下是MySQL中从SELECT中插入数据的语法:

INSERT INTO new_table_name (column_name(s))
SELECT column_name(s)
FROM existing_table_name
WHERE condition;
解释
  • new_table_name: 新表的名称,该表将存储SELECT语句的结果。
  • column_name(s): 要插入的列的名称。
  • existing_table_name: 从中检索数据的表名。
  • condition: 可选参数,它可以过滤掉SELECT语句返回的表中的行。
实例

例如,您可以将一个表的数据插入到另一个表中。假设您有一个名为customers的表,其中包含以下内容:

| customer_id | customer_name | email | | ----------- | ------------- | --------------| | 1 | John Doe | john@example.com | | 2 | Jane Doe | jane@example.com | | 3 | John Smith | js@example.com |

现在,您想将所有拥有example.com邮件地址的客户的信息从customers表中复制到一个新表new_customers中。下面是这个操作的语法:

INSERT INTO new_customers (customer_id, customer_name, email)
SELECT customer_id, customer_name, email
FROM customers
WHERE email LIKE '%example.com';

这将创建一个新表new_customers,其中包含从customers表中复制的具有example.com邮件地址的所有客户的信息。

注意事项

在执行这个命令时需要注意以下几点:

  • 新表必须已经存在。
  • SELECT语句返回的列的数据类型必须与插入这些数据的列的数据类型相同。
  • 如果您想插入一个常量值而不是SELECT语句返回的值,则必须在INSERT INTO语句中指定该常量值。
结论

MySQL的SELECT INTO语句是一种非常强大的工具,可用于将一个表中的数据复制到另一个表中,并且可以根据条件过滤要复制的数据。这个用例特别有用,在需要合并多个表数据或仅仅保存查询结果的情况下。