insert into select的實際用法

INSERT INTO SELECT語句sql

語句形式爲:Insert into Table2(field1,field2,...) select value1,value2,... from Table1select

或者:Insert into Table2 select  *  from Table1語法

注意:(1)要求目標表Table2必須存在,而且字段field,field2...也必須存在channel

(2)注意Table2的主鍵約束,若是Table2有主鍵並且不爲空,則 field1, field2...中必須包括主鍵數據

(3)注意語法,不要加values,和插入一條數據的sql混了,不要寫成:查詢

Insert into Table2(field1,field2,...) values (select value1,value2,... from Table1)ab

因爲目標表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渠道'

相關文章
相關標籤/搜索