SQL INSERT INTO SELECT 语句


SQL INSERT INTO SELECT语句可以将一张表的数据插入到另一张表中,同时也可以对数据进行筛选或处理。语法如下:

INSERT INTO table2(column1, column2, )
SELECT column1, column2, 
FROM table1
WHERE condition;

其中,table1为数据来源的表,table2为插入数据的目标表,而column1、column2等则是表中的列。

INSERT INTO语句后面跟的是目标表的名称和要插入的列名,而SELECT语句指定了要插入数据的来源以及要进行筛选或处理的条件。

以下是这个语句的执行过程:

  1. 指定要插入的列,也就是table2中的列。
  2. 执行SELECT语句,从table1中抽取符合条件的数据,并按照要求的方式进行处理。
  3. 将处理后的数据插入到table2的对应列中。

下面是一个实例:

INSERT INTO customers_new(name, email, city)
SELECT name, email, city
FROM customers
WHERE age > 18;

该语句的作用是将customers表中年龄大于18岁的顾客的姓名、邮件和所在城市插入到customers_new表中的相应列中。

需要注意的是,INSERT INTO SELECT 语句还有一些额外的细节:

  1. 目标表和源表的列数必须相等。
  2. 数据类型必须匹配。如果源表中的数字类型没有足够的精度,则会截断精度,例如,数据类型为float类型,两个数相差太小,小数点后的位数会被自动忽略。
  3. 如果插入列的顺序与选择列表不匹配,则必须按照相应的顺序进行匹配。
  4. 如果插入表中已经存在某个列的值,则会被更新为新的值。

总之,SQL INSERT INTO SELECT语句是很方便的语句,可以快速地将数据从一个表中复制到另一个表中,并进行额外的修改和处理。