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 .. # ...
随机推荐
- 转过来的Xpath语法
XPath 是XML的查询语言,和SQL的角色很类似.以下面XML为例,介绍XPath 的语法. <?xml version="1.0" encoding="I ...
- Javascript 日期格式化
Javascript 日期格式化 需求: 给出:日期 .格式,根据日期格式进行输出. Date.prototype.Format = function (fmt) { //author: meizz ...
- python matplotlib 可视化操作实例
具体代码: # encoding: utf-8 # coding = utf-8 import sys reload(sys) sys.setdefaultencoding('utf8') from ...
- 一个小笔记(5):A*算法
A-Star算法是一种静态路网中求解最短路径最有效的直接搜索方法其实百科有 http://baike.baidu.com/link?url=CvmkWQIAmztYgMq3Nk1WyWkDiC0koV ...
- C语言数组_04
概念:数组是在程序设计中,为了处理方便, 把具有相同类型的若干变量按有序的形式组织起来的一种形式.这些按序排列的同类数据元素的集合称为数组.在C语言中,数组属于构造数据类型.一个数组可以分解为多个数组 ...
- window nodejs 版本管理器 nvm-windows 教程
先去https://github.com/coreybutler/nvm-windows/releases 下载nvm-setup.zip 安装 安装的过程中会提示是否获取nodejs的管理权限,点确 ...
- luoguP1164 小A点菜(背包问题)
题目背景 uim神犇拿到了uoi的ra(镭牌)后,立刻拉着基友小A到了一家……餐馆,很低端的那种. uim指着墙上的价目表(太低级了没有菜单),说:“随便点”. 题目描述 不过uim由于买了一些辅(e ...
- golang 实现冒泡排序
package main import ( "fmt" ) func main(){ a := [...] int{2,5,9,6,8} fmt.Println(a) num := ...
- verilog random使用
“$random函数调用时返回一个32位的随机数,它是一个带符号的整形数...”,并给出了一个例子: _________________________________________________ ...
- Python面向对象(类之间的关系)(三)
类与类之间的关系 在我们的世界中事物和事物之间总会有一些联系. 在面向对象中. 类和类之间也可以产生相关的关系 1. 依赖关系 执行某个动作的时候. 需要xxx来帮助你完成这个操作. 此时的关系是最轻 ...