今天群里有人了一个问题,大概是要实现如下功能:
实现查询2015年6月1号-5号之内的数据,但是数据库里只有1号和3号两天的数据,2号和4号想查询的时候返回一个主键为-1的空数据,mysql数据库。(意思就是即使这一天没有数据,也要显示出日期,并且主键使用-1代替NULL,并且不能使用其他关联表,如日期表)
通过上网查询并整合,写了如下查询SQL,日期可以根据实际情况进行调整:
-- 定义自增变量 set @i = -1; -- 创建指定日期间记录数天数需要 加 1 set @sql = repeat(" select 1 union all",-datediff('2015-06-01','2015-06-05')+1); -- 将最后一个union all 去掉,这里前边加1个空格,就不用在减1了 set @sql = left(@sql,length(@sql)-length(" union all")); -- 拼接sql,注意日期与第一个SQL中的日期保持一致 set @sql = concat("select date_add('2015-06-01',interval @i:=@i+1 day) as date from (",@sql,") as tmp"); -- 最终要执行的SQL test1是测试表,就是存储数据的表 set @sql1 = concat("select coalesce(test1.id, -1) as id, t.date from test1 RIGHT JOIN (", @sql, " )t on DATE_FORMAT(test1.date,'%Y-%m-%d') = t.date"); prepare stmt from @sql1; execute stmt;
其中,test1表只包括id和date两个字段,id是主键,建表语句如下:
CREATE TABLE test1 ( id int(11) NOT NULL DEFAULT 0 , date varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL , PRIMARY KEY (id) )
测试数据如下:
INSERT INTO `test1` VALUES ('1', '2015-06-01 10:11:22'), ('2', '2015-06-03 10:11:22'), ('3', '2015-06-05 10:11:22'), ('4', '2015-06-06 10:11:22'), ('5', '2015-06-07 10:11:22');
注意:test1中date字段的格式包含具体时间,查询条件不包含时间只包含日期
相关推荐
mysql 特殊命令总结
mysql查询多少秒内的数据,分类统计用户,sum()函数的一个特殊用法 一条比较经典的语句mysql查询多少秒内的数据,分类统计用户,sum()函数的一个特殊用法 一条比较经典的语句mysql查询多少秒内的数据,分类统计用户,...
php javascript html mysql 特殊字符处理方式
MySQL配置文件my.ini或my.cnf的位置 show status 与show variables 区别 1、show status 2、show variables 根据status状态对Mysql数据库进行优化: 1、连接数 1.1 show variables like ‘max_connections...
mysql> SHOW VARIABLES LIKE "%version%"; + ————————-+——————————+ | Variable_name | Value | + ————————-+——————————+ | protocol_version | 10
│ 7_MySQL字表分区和NULL值特殊处理.mp4 │ 8_MySQL表分区管理.mp4 │ 作业.docx │ 作业及答案.docx │ ├─新版MySQL DBA综合实战班 第09天 │ 1_课堂作业讲解.mp4 │ 2_MySQL复制原理.mp4 │ 3_MySQL传统复制...
单击此处添加标题 * * * * * * * * * * 目录页 MYSQL联合查询下 联合查询注入原理-判断数据输出位置 SELECT 语句的特殊用法: 当SELECT关键字后跟随的字段名为数字时,结果集也将是对应的数字,如: 联合查询注入...
5.13. MySQL查询高速缓冲 5.13.1. 查询高速缓冲如何工作 5.13.2. 查询高速缓冲SELECT选项 5.13.3. 查询高速缓冲配置 5.13.4. 查询高速缓冲状态和维护 6. MySQL中的复制 6.1. 复制介绍 6.2. 复制实施概述 6.3. 复制...
在一个字符串中,如果某个序列具有特殊的含义,每个序列以反斜线符号 (“”)开头,称为转义字符。 MySQL 识别下列转义字符: 0 一个 ASCII 0 (NUL) 字符。 ‘ 一个 ASCII 39 单引号 (“’”) 字符。 ” 一个 ASCII ...
我在用mysql 保存微信昵称,当插入昵称数据的时候,报错。接下来通过本文给大家介绍mysql保存微信昵称特殊字符的方法,需要的朋友一起看看吧
3.3剖析MySQL查询77 3.3.1剖析服务器负载77 3.3.2剖析单条查询81 3.3.3使用性能剖析87 3.4诊断间歇性问题88 3.4.1单条查询问题还是服务器问题89 3.4.2捕获诊断数据93 3.4.3一个诊断案例98 3.5其他剖析工具...
5.13. MySQL查询高速缓冲 5.13.1. 查询高速缓冲如何工作 5.13.2. 查询高速缓冲SELECT选项 5.13.3. 查询高速缓冲配置 5.13.4. 查询高速缓冲状态和维护 6. MySQL中的复制 6.1. 复制介绍 6.2. 复制实施概述 6.3. 复制...
Mysql常用显示命令 1、显示当前数据库服务器中的数据库列表: mysql> SHOW DATABASES; 注意:mysql库里面有MYSQL的系统信息,我们改密码和新增用户,实际上就是用这个库进行操作。 2、进入数据库: mysql> USE 库名...
MySQL查询高速缓冲 5.13.1. 查询高速缓冲如何工作 5.13.2. 查询高速缓冲SELECT选项 5.13.3. 查询高速缓冲配置 5.13.4. 查询高速缓冲状态和维护 6. MySQL中的复制 6.1. 复制介绍 6.2. 复制实施...
5.13. MySQL查询高速缓冲 5.13.1. 查询高速缓冲如何工作 5.13.2. 查询高速缓冲SELECT选项 5.13.3. 查询高速缓冲配置 5.13.4. 查询高速缓冲状态和维护 6. MySQL中的复制 6.1. 复制介绍 6.2. 复制实施概述 6.3. 复制...
5.13. MySQL查询高速缓冲 5.13.1. 查询高速缓冲如何工作 5.13.2. 查询高速缓冲SELECT选项 5.13.3. 查询高速缓冲配置 5.13.4. 查询高速缓冲状态和维护 6. MySQL中的复制 6.1. 复制介绍 6.2. 复制实施概述 6.3. 复制...
5.13. MySQL查询高速缓冲 5.13.1. 查询高速缓冲如何工作 5.13.2. 查询高速缓冲SELECT选项 5.13.3. 查询高速缓冲配置 5.13.4. 查询高速缓冲状态和维护 6. MySQL中的复制 6.1. 复制介绍 6.2. 复制实施概述 6.3....
5.13. MySQL查询高速缓冲 5.13.1. 查询高速缓冲如何工作 5.13.2. 查询高速缓冲SELECT选项 5.13.3. 查询高速缓冲配置 5.13.4. 查询高速缓冲状态和维护 6. MySQL中的复制 6.1. 复制介绍 6.2. 复制实施概述 6.3. 复制...
mysql 优化以及 中文乱码处理问题。不错的东东。
MySql中提高性能的一个最有效的方式就是对数据表设计合理的索引. 索引提供了高效访问数据的方法,并且加快查询速度. 如果查询时没有使用索引,那么查询语句将扫描表中所有的记录.在数据量大的时候,这样查询速度会很慢....