MySQL可以根據查詢到的記錄集插入到指定的表中其例子為:
首先闡述三張表的結構:
s(sno,sname.sex,age,dept) //學生信息表
c(cno,cname,tname) //課程信息表
sc(sno,cno,grade) //課程選修信息表那麼現在就是問題是:
將一門課的成績大於等於80分學生的學號、姓名和系名插入到一個已存在(要建立)基本表stu(sno,sname,dept)中
stu表已存在 數據庫Schema為:
<span style="font-size:18px;color:#FF0000;">drop table if EXISTS stu ; create table stu ( sno int(4) unique , sname varchar(20), dept varchar(10) );</span>
那麼現在將結果的sql語句寫出來:
<span style="font-size:18px;color:#FF0000;">insert into stu (sno,sname,dept) select sno ,sname , dept from s where s.sno in (select sc.sno from sc where sc.grade >= 80 ); </span>
接下來是上面的sql語句的語法規則 :
INSERT INTO 表名1(字段列表1) SELECT 字段列表2 FROM 表名2 WHERE 條件表達式;表名1:表示記錄插入到哪個表中。字段列表1:表示為哪些字段賦值。字段列表2:表示從表中查詢出哪些字段的數據。表名2:表示記錄是從哪個表中查詢出來的。條件表達式:表示設置SELECT語句的查詢條件。
將“表名2”中查詢出來的記錄插入到“表名1”中以後,“表名2”中仍然保存著原來的記錄。
使用這種方法時,必須保證“字段列表1”和“字段列表2”中的字段個數是一樣的,同時,也必須保證每個對應的字段的數據類型是一樣的。如果數據類型不一樣,數據庫系統會報錯。然後,阻止INSERT語句向下執行。