mysql 多日志表结果集合拼接存储过程
2023-09-14 09:09:00 时间
通常单天的日志 仅仅记录当天的日志信息,假设须要查看一月内的日志信息须要对每天的日志表结果集合进行拼接,通经常使用到 union 。
储存过程:
drop PROCEDURE if EXISTS unionSp; DELIMITER // create procedure unionSp(sTime varchar(32), eTime varchar(32),tchema varchar(32)) begin declare sqlVar varchar(1024000); declare rest int; declare tableName varchar(1024); set rest = 100; set sqlVar=''; while rest > 0 do set sTime = (select DATE_FORMAT((select ADDDATE(sTime,1)),'%Y%m%d')); set tableName=CONCAT('tbl_req_',sTime); select count(1) from information_schema.tables where table_name = tableName and TABLE_SCHEMA=tchema into @cnt; if @cnt != 0 then if rest=1 then set sqlVar=CONCAT(sqlVar,' SELECT DISTINCT channel_id,app_id from tbl_req_',sTime); ELSE set sqlVar=CONCAT(sqlVar,' SELECT DISTINCT channel_id,app_id from tbl_req_',sTime,' UNION'); END IF; END if; set rest = DATEDIFF(eTime,sTime); END while; set @v_s=sqlVar; prepare stmt from @v_s; EXECUTE stmt; DEALLOCATE PREPARE stmt; end; // DELIMITER; call unionSp('20140730','20140930','biz_date')
union:联合的意思,即把两次或多次查询结果合并起来。
要求:两次查询的列数必须一致
推荐:列的类型能够不一样,但推荐查询的每一列,想相应的类型以一样
能够来自多张表的数据:多次sql语句取出的列名能够不一致,此时以第一个sql语句的列名为准。
假设不同的语句中取出的行,有全然同样(这里表示的是每一个列的值都同样),那么union会将同样的行合并,终于仅仅保留一行。也能够这样理解,union会去掉反复的行。
假设不想去掉反复的行,能够使用union all
相关文章
- enterprise library mysql_enterpriseLibrary连接MySQL数据库
- MySQL时间限制条件解析(mysql条件时间)
- MySQL: 使用关键字作为列名的注意事项(mysql列名是关键字)
- 返回的数据MySQL存储游标返回结果的实现(mysql存储游标)
- MySQL实现主从复制架构配置指南(mysql配置主从数据库)
- 检查MySQL是否安装成功(查看是否安装了mysql)
- MySQL中的表存储:一个指南(mysql表存在)
- MySQL管理之二进制数据深度剖析(mysql二进制数据)
- 格式MySQL中的二进制数据存储格式(mysql二进制数据)
- MySQL中实现高效存储的二进制数据(mysql二进制数据)
- MySQL 学习指南:25个必备技巧!(mysql学习方法)
- MySQL操作指南:如何清空一个表?(mysql清空一个表)
- MySQL中快速导入数据的方法(mysql导入数据)
- MySQL:存储千万数据的信任之选(mysql千万数据)
- MySQL查询结果总页数实现方法(mysql 总页数)
- MySQL修改视图:让数据可视化(mysql 修改视图)
- MySQL中的二进制数据存储机制(mysql 二进制数据)
- MySQL日志恢复:让数据活跃起来(mysql 日志恢复数据)
- 在CMD中管理MySQL数据库的方法(cmd中登入mysql)
- MySQL存储一个数字的最佳方式(mysql 一个数字)
- MySQL语法掌握MySQL的基本语法知识(mysql yufa)
- 初学者必知MySQL Yog的基础使用教程(mysql yog怎么写)
- 如何解决MySQL不支持本机访问的问题(mysql不支持本机访问)