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渠道'