mysql如何將查詢結(jié)果插入到另一張表中
mysql將查詢結(jié)果插入到另一張表中
INSERT INTO
(1) 如果兩張表(導出表和目標表)的字段一致,并且希望插入全部數(shù)據(jù),可以用這種方法:
INSERT INTO 目標表 SELECT * FROM 來源表 WHERE 條件;
例:要將 student表插入到 newStudent 表中,則可以通過如下SQL語句實現(xiàn):
INSERT INTO newStudent SELECT * FROM student;
(2) 如果只希望導入指定字段,可以用這種方法:
INSERT INTO 目標表(字段1,字段2,...) SELECT 字段1,字段2,... FROM 來源表 WHERE 條件;
這里需要注意:兩表的字段必須一致(位置一致,類型一致),否則會出現(xiàn)數(shù)據(jù)轉(zhuǎn)換錯誤。
例:臨時信息表部分字段信息中的數(shù)據(jù)同步到信息表中
INSERT INTO `litemall_company_enter` (user_id,`name`,`type`,`time`,number,price,link,brief,product,`code`,legal_person,phone,email,address,`sign`,add_time,update_time,deleted) SELECT -1,t.`name`,t.`type`,t.`time`,t.number,t.price,t.link,t.brief,t.product,t.`code`,t.legal_person,t.phone,t.email,t.address,1,NOW(),NOW(),0 FROM `litemall_company_enter_temporary` t WHERE t.id IN (2,4,6)
(3) 如果需要只導入目標表中不存在的記錄,可以使用這種方法:
INSERT INTO 目標表(字段1, 字段2, …) SELECT 字段1, 字段2, … FROM 來源表 WHERE NOT exists (SELECT * FROM 目標表 WHERE 目標表.比較字段 = 來源表.比較字段);
例:臨時信息表部分字段信息中的數(shù)據(jù)同步到信息表中,如果存在則不同步,不存在則同步
INSERT INTO `litemall_company_enter` (user_id,`name`,`type`,`time`,number,price,link,brief,product,`code`,legal_person,phone,email,address,`sign`,add_time,update_time,deleted) SELECT -1,t.`name`,t.`type`,t.`time`,t.number,t.price,t.link,t.brief,t.product,t.`code`,t.legal_person,t.phone,t.email,t.address,1,NOW(),NOW(),0 FROM `litemall_company_enter_temporary` t WHERE NOT EXISTS (SELECT * FROM `litemall_company_enter` e WHERE e.name=t.name AND e`.code=t.code )
SELECT INTO
SELECT INTO 語句從一個表中選取數(shù)據(jù),然后把數(shù)據(jù)插入另一個表中。常用于創(chuàng)建表的備份復件或者用于對記錄進行存檔。
(1) 兩張表字段完全一致,全部字段數(shù)據(jù)進行拷貝
SELECT * INTO student_backups FROM student WHERE class='高三(2)班';
(2) 拷貝指定字段
SELECT name,age,student_num INTO student_backups FROM student WHERE class='高三(2)班';
(3) IN 子句可用于向另一個數(shù)據(jù)庫 Backup.mdb 中拷貝表
SELECT * INTO student IN 'Backups.mdb' FROM student WHERE class='高三(2)班';
(4) 多表關聯(lián)選取數(shù)據(jù)
SELECT s.name,t.id INTO teacher_student_backups FROM student s INNER JOIN teacher t ON s.tid=t.id;
mysql查詢結(jié)果的數(shù)據(jù)新增到另一張表里
1.把B表的數(shù)據(jù)查詢出新增到A表去
`INSERT INTO a(id,name)? SELECT ?b.id as id,b.name as name FROM b;`?
2.B表的字段滿足不了A的情況下
‘name’是對應type ,now()是對應的create_date
INSERT INTO dim_attach (type,bill_id,url,create_date) select ?'name', ?a.id AS bill_id, a.head_address AS url,now() FROM ?dim_people a
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
linux 之centos7搭建mysql5.7.29的詳細過程
這篇文章主要介紹了linux 之centos7搭建mysql5.7.29的詳細過程,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-05-05navicat 8 創(chuàng)建數(shù)據(jù)庫與創(chuàng)建用戶分配權(quán)限圖文方法
navicat是一款不錯的圖形化管理mysql的工具,大家一般都是用phpmyadmin或直接命令行操作,對于不是很熟悉命令的朋友,就可以使用navicat這個工具了,方便操作。2011-04-04