1、insert into select(insert select)語句
要求目標表Table2必須存在,由於目標表Table2已經存在,所以我們除了插入源表Table1的字段外,還可以插入常量
語句形式為:
1 Insert into Table2(field1,field2,...) select value1,value2,... from Table1
上面的語句比較適合兩個表的數據互插,如果多個表就不適應了。對於多個表,我們可以先將需要查詢的字段join起來,然后組成一個視圖后再select from就可以了,sql代碼如下所示:
1 INSERT INTO a(field1,field2) SELECT * FROM(SELECT f1,f2 FROM b JOIN c) AS tb
實例:
向SC表中插入一些記錄,這些記錄要求符合以下條件:沒有上過編號“3”課程的同學學號、2號課的平均成績;
1 Insert score 2 select s.id,'6',(Select avg(score) from score where course_id='2') 3 from student s 4 where s.id not in (Select student_id from score where course_id='3');
注意:
(1)要求目標表Table2必須存在,並且字段field,field2…也必須存在
(2)注意Table2的主鍵約束,如果Table2有主鍵而且不為空,則 field1, field2…中必須包括主鍵
(3)注意語法,不要加values,和插入一條數據的sql混了,不要寫成:
1 Insert into Table2(field1,field2,...) values (select value1,value2,... from Table1) //錯誤的寫法
由於目標表Table2已經存在,所以我們除了插入源表Table1的字段外,還可以插入常量。
2、select into from 語句
要求目標表Table2不存在,因為在插入時會自動創建表Table2,並將Table1中指定字段數據復制到Table2中。示例如下
語句形式為:
1 SELECT vale1, value2 into Table2 from Table1