今天遇到一个业务需求是这样的:对在职员工超过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将查询结果插入到另外一张表的更多相关文章

  1. Oracle中把一张表查询结果插入到另一张表中

      1. 新增一个表,通过另一个表的结构和数据 create table XTHAME.tab1 as select * from DSKNOW.COMBDVERSION 2. 如果表存在: inse ...

  2. sql语句 怎么从一张表中查询数据插入到另一张表中?

    sql语句 怎么从一张表中查询数据插入到另一张表中?  ----原文地址:http://www.phpfans.net/ask/MTc0MTQ4Mw.html 比如我有两张表 table1 字段 un ...

  3. SQL 将查询结果插入到另一张表中

    INSERT INTO (1) 如果两张表(导出表和目标表)的字段一致,并且希望插入全部数据,可以用这种方法: INSERT INTO 目标表 SELECT * FROM 来源表 WHERE 条件; ...

  4. mysql如何查询一个字段在哪几张表中

    SELECT TABLE_SCHEMA,TABLE_NAME FROM information_schema.`COLUMNS` WHERE COLUMN_NAME = 'xxx' ; xxx替换成需 ...

  5. sql把一个表数据插入到另一张表

    把一个表数据插入到另一张表 insert into tableB (field1,field2,field3,field4) select field1,field2,field3,'val4' fr ...

  6. Sqlserver将数据从一张表插入到另一张表

    1.如果是整个表复制表达如下: insert into table1 select * from table2 2.如果是有选择性的复制数据表达如下: insert into table1(colum ...

  7. sqlserver查询当前库下,一张表的表名,字段名,字段类型,字段长度

    sqlserver版: 查询当前数据库下所有表名: select * from sys.tables; 查询当前库下,一张表的表名,字段名,字段类型,字段长度: select a.name 表名,b. ...

  8. MySql频繁查询、插入数据

    当我们需要频繁地从数据库查询.插入数据时,可以将这些数据库操作汇集写到同一个类里,作为工具类直接调用. 将数据库的具体信息保存在.properties文件中,用log4j作为日志记录 MySql.ja ...

  9. 05 MySQL之查询、插入、更新与删除

    01-查询数据 语法格式: select * | 字段列表 from 表1, 表2 where 表达式 group by ... having ... order by ... limit .. # ...

随机推荐

  1. js设置元素float的问题

    用js设置一个元素的float样式 div.style.float = 'left'; 这句话在谷歌浏览器或许没问题,但是在IE,火狐下会无效 正确写法是 div.style.styleFloat = ...

  2. 思维 || Make It Equal

    http://codeforces.com/contest/1065/problem/C 题意:给你n个高度分别为a[i]的塔,每次可以横着切一刀,切掉不多于k个塔,问最少切多少刀才能把塔切的都一样高 ...

  3. javaEE(10)_jdbc基本使用

    一.JDBC简介 1.SUN公司为了简化.统一对数据库的操作,定义了一套Java操作数据库的规范,称之为JDBC,JDBC(Java Data Base Connectivity,java数据库连接) ...

  4. 总结:JavaScript异步、事件循环与消息队列、微任务与宏任务

    本人正在努力学习前端,内容仅供参考.由于各种原因(不喜欢博客园的UI),大家可以移步我的github阅读体验更佳:传送门,喜欢就点个star咯,或者我的博客:https://blog.tangzhen ...

  5. MFC学习小结

    2019/1/13 视频来源 一.   MFC框架中一些重要的函数 1. InitInstance函数 应用程序类的一个虚函数,MFC应用程序的入口.初始化的作用. 2. PreCreateWindo ...

  6. CF547D Mike and Fish 建图

    题意: 有点长→CF547DMike and Fish. 分析: 其实也没什么好分析的,我这也是看的题解. (不过,那篇题解好像文字的代码不太对劲) 这里直接说做法,正确性自证: 对输入的,将横.纵坐 ...

  7. Java测试技巧

    快捷键 修改快捷键 window->preference->general->keys: 查找引用:ctrl+shift+g 覆盖测试:alt+shift+E,T 复制一行:ctrl ...

  8. URL链接后面的参数解析,与decode编码解码;页面刷新回到顶部jquery

    function request() { var urlStr = location.search; ) { theRequest = []; return; } urlStr = urlStr.su ...

  9. Lex与Yacc学习(九)之Yacc语法

    Yacc语法 本文讨论yacc语法的格式并描述可用的各种特征和选项 yacc语法结构 yacc语法包括三部分:定义段.规则段和用户子例程段 ...定义段... %% ...规则段... %% ...用 ...

  10. Verilog学习笔记基本语法篇(六)········ 循环语句

    在Verilog中存在着4种类型的循环语句,用来控制执行语句的执行次数. 1)forever语句: 连续执行的语句. 2)repeat语句:  连续执行n次的语句. 3)while语句:    执行语 ...