欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

mysql_sql将查询结果插入到另一张表中

程序员文章站 2022-03-29 17:24:58
INSERT INTO(1) 如果两张表(导出表和目标表)的字段一致,并且希望插入全部数据,可以用这种方法:INSERT INTO 目标表 SELECT * FROM 来源表 WHERE 条件;例:要将 student表插入到 newStudent 表中,则可以通过如下SQL语句实现:INSERT INTO newStudent SELECT * FROM student;(2) 如果只希望导入指定字段,可以用这种方法:INSERT INTO 目标表(字段1,字段2,...) SELECT...

INSERT INTO

(1) 如果两张表(导出表和目标表)的字段一致,并且希望插入全部数据,可以用这种方法:

INSERT INTO 目标表 SELECT * FROM 来源表 WHERE 条件;

例:要将 student表插入到 newStudent 表中,则可以通过如下SQL语句实现:

INSERT INTO newStudent SELECT * FROM student;

(2) 如果只希望导入指定字段,可以用这种方法:

INSERT INTO 目标表(字段1,字段2,...) SELECT 字段1,字段2,... FROM 来源表 WHERE 条件;

这里需要注意:两表的字段必须一致(位置一致,类型一致),否则会出现数据转换错误。
例:临时信息表部分字段信息中的数据同步到信息表中

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 目标表.比较字段 = 来源表.比较字段);

例:临时信息表部分字段信息中的数据同步到信息表中,如果存在则不同步,不存在则同步

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 语句从一个表中选取数据,然后把数据插入另一个表中。常用于创建表的备份复件或者用于对记录进行存档。
(1) 两张表字段完全一致,全部字段数据进行拷贝

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 子句可用于向另一个数据库 Backup.mdb 中拷贝表

SELECT * INTO student IN 'Backups.mdb' FROM student WHERE class='高三(2)班';

(4) 多表关联选取数据

SELECT s.name,t.id INTO teacher_student_backups FROM student s INNER JOIN teacher t ON s.tid=t.id;

本文地址:https://blog.csdn.net/weixin_44826433/article/details/112576819

相关标签: mysql