MySql将查询结果插入到另外一张表
今天遇到一个业务需求是这样的:对在职员工超过55岁提醒。我想的思路是查询员工表,然后将超过55岁的人的信息存到另一个表,并且以消息的形式给用户提示,用户处理掉之后此消息失效(在数据库做标记)。
不管是在网站开发还是在应用程序开发中,我们经常会碰到需要将MySQL或MS SQLServer某个表的数据批量导入到另一个表的情况,甚至有时还需要指定导入字段。(当然可以混合查询多个表进行插入)
本文就将以MySQL数据库为例,介绍如何通过SQL命令行将某个表的所有数据或指定字段的数据,导入到目标表中。此方法对于SQLServer数据库,也就是T-SQL来说,同样适用 。
类别一、 如果两张张表(导出表和目标表)的字段一致,并且希望插入全部数据,可以用这种方法:
- INSERT INTO目标表SELECT * FROM来源表 ;
例如,要将 articles 表插入到 newArticles 表中,则可以通过如下SQL语句实现:
- INSERT INTOnewArticlesSELECT * FROMarticles ;
类别二、 如果只希望导入指定字段,可以用这种方法:
- INSERT INTO目标表 (字段1, 字段2, ...)SELECT字段1, 字段2, ...FROM来源表 ;
请注意以上两表的字段必须一致,否则会出现数据转换错误。
===========================================================================================
- INSERT INTO TPersonnelChange(
- UserId,
- DepId,
- SubDepId,
- PostionType,
- AuthorityId,
- ChangeDateS,
- InsertDate,
- UpdateDate,
- SakuseiSyaId
- )SELECT
- UserId,
- DepId,
- SubDepId,
- PostionType,
- AuthorityId,
- DATE_FORMAT(EmployDate, '%Y%m%d'),
- NOW(),
- NOW(),
- 1
- FROM
- TUserMst
- WHERE
- `Status` = 0
- AND QuitFlg = 0
- AND UserId < 2
---------------------自己的业务实现----------------------------
1.插入语句:
年龄大于55的插入,且只插入一条数据,
- INSERT INTO message
- (messageid,
- NAME,
- idCode,
- sex,
- birthday,
- headaddress,
- isDispose)
- SELECT DISTINCT
- emp.employeeId,
- emp.name,
- emp.idCode,
- emp.sex,
- emp.birthday,
- emp.headaddress,
- ''
- FROM employee_out emp,
- haulemployeeout haulemp,
- haulinfo haul
- WHERE emp.idCode = haulemp.empoutIdcard
- AND haulemp.bigid = haul.bigid
- AND haul.bigstatus = '进行中'
- AND emp.employeeId NOT IN(SELECT
- messageid
- FROM message)
- AND TIMESTAMPDIFF(YEAR,emp.birthday,NOW()) >
2.在此基础上写的存储过程:
- DELIMITER $$
- CREATE PROCEDURE `queryOlderPerson`()
- BEGIN
- /*将外部55岁以上插入消息表*/
- INSERT INTO message
- (messageid,
- NAME,
- idCode,
- sex,
- birthday,
- empType,
- isDispose)
- SELECT DISTINCT
- emp.employeeId,
- emp.name,
- emp.idCode,
- emp.sex,
- emp.birthday,
- '',
- ''
- FROM employee_out emp,
- haulemployeeout haulemp,
- haulinfo haul
- WHERE emp.idCode = haulemp.empoutIdcard
- AND haulemp.bigid = haul.bigid
- AND haul.bigstatus = '进行中'
- AND emp.employeeId NOT IN(SELECT
- messageid
- FROM message)
- AND TIMESTAMPDIFF(YEAR,emp.birthday,NOW()) > 54;
- /*将内部55岁以上插入消息表*/
- INSERT INTO message
- (messageid,
- NAME,
- idCode,
- sex,
- birthday,
- empType,
- isDispose)
- SELECT DISTINCT
- emp.employeeId,
- emp.name,
- emp.idCode,
- emp.sex,
- emp.birthday,
- '',
- ''
- FROM employee_in emp
- WHERE emp.employeeId NOT IN(SELECT
- messageid
- FROM message)
- AND TIMESTAMPDIFF(YEAR,emp.birthday,NOW()) > 54;
- END $$
- DELIMITER ;
3.mysql事件调用上面存储过程:(每分钟执行一次上面存储过程)
- CREATE event queryOlderPer ON SCHEDULE EVERY 1 MINUTE STARTS NOW() DO CALL queryOlderPerson()
MySql将查询结果插入到另外一张表的更多相关文章
- Oracle中把一张表查询结果插入到另一张表中
1. 新增一个表,通过另一个表的结构和数据 create table XTHAME.tab1 as select * from DSKNOW.COMBDVERSION 2. 如果表存在: inse ...
- sql语句 怎么从一张表中查询数据插入到另一张表中?
sql语句 怎么从一张表中查询数据插入到另一张表中? ----原文地址:http://www.phpfans.net/ask/MTc0MTQ4Mw.html 比如我有两张表 table1 字段 un ...
- SQL 将查询结果插入到另一张表中
INSERT INTO (1) 如果两张表(导出表和目标表)的字段一致,并且希望插入全部数据,可以用这种方法: INSERT INTO 目标表 SELECT * FROM 来源表 WHERE 条件; ...
- mysql如何查询一个字段在哪几张表中
SELECT TABLE_SCHEMA,TABLE_NAME FROM information_schema.`COLUMNS` WHERE COLUMN_NAME = 'xxx' ; xxx替换成需 ...
- sql把一个表数据插入到另一张表
把一个表数据插入到另一张表 insert into tableB (field1,field2,field3,field4) select field1,field2,field3,'val4' fr ...
- Sqlserver将数据从一张表插入到另一张表
1.如果是整个表复制表达如下: insert into table1 select * from table2 2.如果是有选择性的复制数据表达如下: insert into table1(colum ...
- sqlserver查询当前库下,一张表的表名,字段名,字段类型,字段长度
sqlserver版: 查询当前数据库下所有表名: select * from sys.tables; 查询当前库下,一张表的表名,字段名,字段类型,字段长度: select a.name 表名,b. ...
- MySql频繁查询、插入数据
当我们需要频繁地从数据库查询.插入数据时,可以将这些数据库操作汇集写到同一个类里,作为工具类直接调用. 将数据库的具体信息保存在.properties文件中,用log4j作为日志记录 MySql.ja ...
- 05 MySQL之查询、插入、更新与删除
01-查询数据 语法格式: select * | 字段列表 from 表1, 表2 where 表达式 group by ... having ... order by ... limit .. # ...
随机推荐
- (转)SpringMVC学习(六)——SpringMVC高级参数绑定与@RequestMapping注解
http://blog.csdn.net/yerenyuan_pku/article/details/72511749 高级参数绑定 现在进入SpringMVC高级参数绑定的学习,本文所有案例代码的编 ...
- ftp - Internet 文件传输程序 (file transfer program)
概述 (SYNOPSIS) ftp [-pinegvd ] [host ] pftp [-inegvd ] [host ] 说明 (DESCRIPTION) 用户通过 Ftp 这个程序来使用 Inte ...
- C++类型强制转换<转>
转载:http://www.cnblogs.com/goodhacker/archive/2011/07/20/2111996.html C风格的强制类型转换(Type Cast)很简单,不管什么类型 ...
- 多线程下载命令--axel
axel是轻量级多线程下载工具,对比传统下载工具curl和wget,下载速度上提升不少 centos安装如下 yum install -y axel 命令行用法 axel [option] url1 ...
- java 操作mongodb查询条件的常用设置
java操作mongodb进行查询,常用筛选条件的设置如下: 条件列表:BasicDBList condList = new BasicDBList(); 临时条件对象:BasicDBObject c ...
- ExtJs如何使用自定义插件动态保存表头配置(隐藏或显示)
关于保存列表表头的配置,一般我们不需要与后台交互,直接保存在 localStorage 中就能满足常规使用需求(需要浏览器支持). 直接上代码,插件: Ext.define('ux.plugin.Co ...
- URL链接后面的参数解析,与decode编码解码;页面刷新回到顶部jquery
function request() { var urlStr = location.search; ) { theRequest = []; return; } urlStr = urlStr.su ...
- 【php】 get 和 post 比较
来源 php.net 评论区 -- nucc1 worth clarifying: POST is not more secure than GET. The reasons for choosing ...
- django(django框架了解,http协议)
Django框架 学习目的: 完成web应用的编写 django的作用: 0.业务逻辑分发(路由分发) 1.业务逻辑实现: 业务逻辑根据分发来完成具体的事,再根据具体事的需求,和页面或数据库交互,返回 ...
- 数据结构( Pyhon 语言描述 ) — —第10章:树
树的概览 树是层级式的集合 树中最顶端的节点叫做根 个或多个后继(子节点). 没有子节点的节点叫做叶子节点 拥有子节点的节点叫做内部节点 ,其子节点位于层级1,依次类推.一个空树的层级为 -1 树的术 ...