1. 程式人生 > >mysql 可以根據查詢結果插入到指定的表中

mysql 可以根據查詢結果插入到指定的表中


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語句向下執行。


相關推薦

查詢結果插入

not 創建 lis default inf pre police span signed 語法:INSERT INTO table_name1 (column_list) SELECT (column_list2) FROM table_name2 WHE

mysql 可以根據查詢結果插入指定

MySQL可以根據查詢到的記錄集插入到指定的表中其例子為: 首先闡述三張表的結構: s(sno,sname.sex,age,dept)   //學生資訊表 c(cno,cname,tname) 

mysql在把子查詢結果作為刪除資料的條件,mysql不允許在子查詢的同時刪除原資料

** 目標表和原表一致 MYSQL不支援如此操作 資料庫不能邊查詢邊刪除 ** delete from push_msg_overview where id in ( select id from push_msg_overview where pus

MySQL 資料庫操作,將查詢結果插入

做專案,需要測試資料,而現成的其他表有類似資料,為了方便,就將想將查詢結果直接放到新表裡。具體操作如下: INSERT INTO TableA(c1,c2,c3) SELECT TableB.c1,TableB.c2,TableB.c3 FROM TableB 如果表存

MySql查詢結果插入到另外一張

標準SQL中INSERT語句允許將SELECT語句查詢出來的資料插入到另一個表中,即可快速地從一個或多個表中向一個表中插入多個行。這樣,可以方便不同表之間進行資料交換。 基本的語法格式如下: INSE

用python指令碼匯出mysql資料庫查詢結果到Excel

最近需要導資料的情況太多,總用跳板機上的navicat工具有點效率低,也覺得挺麻煩的(由於跳板機無法連通外網 所以匯出資料檔案還得通過sftp傳到本機)anyway 還是寫個指令碼好了。之前寫過一個shell指令碼做的定時匯出任務,現在試試用python寫下 主要用到的庫有: pymysql -- 連資料庫

將hive模糊查詢結果寫入分割槽

需求:只保留表1中12月27號的資料  其他日期的都不要 然後將結果又放回表1  最開始我是這種思路 :        ~設定開啟動態分割槽開關   set hive.exec.dynamic.partition

mysql查詢結果匯出到excel

SELECT *  from limit_record INTO OUTFILE 'e:/20180424.xls';SELECT *  INTO OUTFILE 'e:/20180424-2.xls'

mysql學習- 將查詢結果加上其他鍵值插入

+------------------+-------------+------+-----+---------+----------------+ | Field          | Type       | Null | Key | Default | Extra        | +--------

sql 如何把一個查詢結果插入到另一張(兩個的結構不同)

 -- 如何把一個表的查詢結果插入到另一張表中(兩個表的結構不同), 插入的欄位個數和查詢的欄位個數必須一致 insert into 表名(欄位1,欄位2,欄位3...) select 欄位1,欄位2,欄位3.. from 查詢表名 where .. insert into A(id,

Oracle把一張查詢結果插入到另一張

Sql程式碼 create table B as select * from A 二、Oracle資料庫中支援把查詢結果匯入到另外一張表中。 例如:有兩個表A和B 1)如果兩個表的表結構是否相同,但要插入的欄位型別相同: (1)把A表的全部欄位資料插入到B表中:Sql程式碼 insert into B sel

Oracle 定時查詢數據插入(job+存儲過程)

存儲過程 operation android lec into oid replace user 是否 create table EGMAS_COUNT_DATA(TIMES date not null, COUNT NUMBER(30) not n

mysql查詢結果進行二次查詢

sele info from card eight bsp 大於 emp mysq 第一次查詢:查詢身份證編號和出現次數 select cardid,count(cardid) as total from p_person_info group by cardid 在第

Mysql將其他的數據更新到指定

use mysql 數據 blog update where bsp users 其他 update tb set tb.字段= (select 字段 from tb1 where tb.字段1 = tb1.字段1); update role set uid = (sel

用python腳本導出mysql數據庫查詢結果到Excel

oca ret argv address add sftp ... xlwt 需要 最近需要導數據的情況太多,總用跳板機上的navicat工具有點效率低,也覺得挺麻煩的(由於跳板機無法連通外網 所以導出數據文件還得通過sftp傳到本機)anyway 還是寫個腳本好了。之前寫

【PHP+MYSQL】批量插入有相同資料的話則批量更新

應用場景 有時候我們向資料庫插入記錄時,有時會有這種需求,當符合某種條件的資料存在時,去修改它,不存在時,則新增資料的情況。 比如說系統配置則一塊,如有下表: CREATE TABLE `system_config` ( `id` int(11) unsigned NOT N

【SQL Server】將查詢結果插入到另一個

查詢結果插入新表 select * into tableA from tableB where … 查詢結果插入已經存在的表 insert into tableA select * from tableB where… 查詢結果跨資料庫 insert into

將一張查詢結果插入到另一張

 1 selectinto 和 insertintoselect 兩種表複製語句 2 select*into destTbl from srcTbl 3  4 insertinto destTbl(fld1, fld2) select fld1, 5from srcTbl 5  6 以上兩句都是將 srcTb

mysql針對查詢結果,批量插入不同的uuid

SELECT REPLACE (UUID(), '-', '') id,id extend_value FROM `portal_product` REPLACE (UUID(), '-', '')這種,批量生成的uuid都是一樣的, 直接用uuid()即可生成不

MySql查詢結果按照指定順序排序

select * from test where id in(3,1,5) order by find_in_set(id,'3,1,5'); select * from test where id in(3,1,5)