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 .. # ...
随机推荐
- windows定时任务小注
static class Program { /// <summary> /// 应用程序的主入口点. /// </summary> [STAThread] static vo ...
- HTML5资源汇总(更新游戏引擎cocos2d-html5)
我也是现学现用,想了解的可以看看效果,想知道实现的也有源码 http://cocos2d-html5.org Cocos2d-HTML5 API和Cocos2d-x一致,同样的代码可以支持cocos2 ...
- 开源项目: circular-progress-button
带进度条显示的按钮, 其效果如下所示: 其由三部分动画组成: 初始状态->圆环状态->完成状态. 0. 实现从初始到圆环的简单实现: 继承自button 类, 设置其背景 public c ...
- jni ndk 入门
1. Linux环境模拟,下载sygwin 安装,选择devl 和shell -> install sygwin 中的配置ndk环境,进入安装目录c:/cygwin64 etc/profile文 ...
- ZendStudio 常用快捷键大全
应用场景 快捷键 功能 查看快捷键 ctrl+shift+l 显示所有快捷键列表 查看和修改快捷键 打开Window->Preferences->General->keys 修改 ...
- Asp.Net Core 进阶(二) —— 集成Log4net
Asp.Net Core 支持适用于各种内置日志记录API,同时也支持其他第三方日志记录.在我们新建项目后,在Program 文件入口调用了CreateDefaultBuilder,该操作默认将添加以 ...
- 爬虫_python3_requests_2
pip install requests 进行简单的操作 发送一个get请求 # 发送请求 import requests response = requests.get('http://httpbi ...
- PAT (Basic Level) Practise (中文)- 1024. 科学计数法 (20)
PAT (Basic Level) Practise (中文)- 1024. 科学计数法 (20) http://www.patest.cn/contests/pat-b-practise/1024 ...
- vsftp配置日志及其启用本地时间
vsftp配置日志及其启用本地时间 1. 启用vsftp日志 xferlog_enable=YES xferlog_std_format=YES xferlog_file=/var/log/xferl ...
- java在线聊天项目0.3版本 制作客户端窗体,实现发送按钮和回车发送信息功能,使用ActionListener监听事件中actionPerformed方法(用内部类和匿名内部类两种方法)
方法一,使用匿名内部类的监听方法,因方法一致代码稍冗余 package com.swift; import java.awt.BorderLayout; import java.awt.Color; ...