欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

insert into select的实际用法

程序员文章站 2022-05-02 12:13:12
INSERT INTO SELECT语句 语句形式为:Insert into Table2(field1,field2,...) select value1,value2,... from Table1 或者:Insert into Table2 select * from Table1 注意:(1 ......

insert into select语句

语句形式为:insert into table2(field1,field2,...) select value1,value2,... from table1

或者:insert into table2 select  *  from table1

注意:(1)要求目标表table2必须存在,并且字段field,field2...也必须存在

(2)注意table2的主键约束,如果table2有主键而且不为空,则 field1, field2...中必须包括主键

(3)注意语法,不要加values,和插入一条数据的sql混了,不要写成:

insert into table2(field1,field2,...) values (select value1,value2,... from table1)

由于目标表table2已经存在,所以我们除了插入源表table1的字段外,还可以插入常量。示例如下:

 

业务背景:在部分字段有变化的情况下,需要把部分数据复制插入到表里;

insert into marketing_jump_manage (id,jump_channel,jump_class, state, creat_time, update_time, creat_name, update_name, show_state, position_name, position_code, component_id, component_name, custom, jump_name,jump_channel_name)
 select seq_subset_message.nextval ,b.* from
 (
 select '60',jump_class, state, creat_time, update_time, creat_name, update_name, show_state, position_name, position_code, component_id, component_name, custom, jump_name, 'xx渠道'
  from marketing_jump_manage c
  where c.jump_channel='2'
 )b;

分析sql:

1.insert语句全部字段

2.自增id 通过序列 seq_subset_message.nextval 查询

3.部分变化字段可以 直接写死,如上sql  '60',  'xx渠道'

       

上一篇: Swift构造

下一篇: sqlserver的坑