`
heweina2007
  • 浏览: 67617 次
  • 性别: Icon_minigender_2
  • 来自: 沈阳
社区版块
存档分类
最新评论

mysql特殊查询

 
阅读更多

今天群里有人了一个问题,大概是要实现如下功能:

实现查询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 特殊命令总结

    mysql查询多少秒内的数据,分类统计用户,sum()函数的一个特殊用法 一条比较经典的语句

    mysql查询多少秒内的数据,分类统计用户,sum()函数的一个特殊用法 一条比较经典的语句mysql查询多少秒内的数据,分类统计用户,sum()函数的一个特殊用法 一条比较经典的语句mysql查询多少秒内的数据,分类统计用户,...

    php javascript html mysql 特殊字符处理.txt

    php javascript html mysql 特殊字符处理方式

    mysql中status状态说明

    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中判断中文字符?

     mysql> SHOW VARIABLES LIKE "%version%";  +  ————————-+——————————+  | Variable_name | Value |  +  ————————-+——————————+  | protocol_version | 10 

    新版 MySQL DBA 高级视频 基于MySQL 5.7 MySQL 8.0版本.rar

    │ 7_MySQL字表分区和NULL值特殊处理.mp4 │ 8_MySQL表分区管理.mp4 │ 作业.docx │ 作业及答案.docx │ ├─新版MySQL DBA综合实战班 第09天 │ 1_课堂作业讲解.mp4 │ 2_MySQL复制原理.mp4 │ 3_MySQL传统复制...

    计算机病毒与防护:MYSQL联合查询下.ppt

    单击此处添加标题 * * * * * * * * * * 目录页 MYSQL联合查询下 联合查询注入原理-判断数据输出位置 SELECT 语句的特殊用法: 当SELECT关键字后跟随的字段名为数字时,结果集也将是对应的数字,如: 联合查询注入...

    MySql 5.1 参考手册.chm

    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 识别下列转义字符: 0 一个 ASCII 0 (NUL) 字符。 ‘ 一个 ASCII 39 单引号 (“’”) 字符。 ” 一个 ASCII ...

    mysql保存微信昵称特殊字符的方法

    我在用mysql 保存微信昵称,当插入昵称数据的时候,报错。接下来通过本文给大家介绍mysql保存微信昵称特殊字符的方法,需要的朋友一起看看吧

    高性能MySQL(第3版).part2

    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其他剖析工具...

    MySQL 5.1中文手冊

    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常用显示命令 1、显示当前数据库服务器中的数据库列表: mysql> SHOW DATABASES; 注意:mysql库里面有MYSQL的系统信息,我们改密码和新增用户,实际上就是用这个库进行操作。 2、进入数据库: mysql> USE 库名...

    mysql5.1中文手册

    MySQL查询高速缓冲 5.13.1. 查询高速缓冲如何工作 5.13.2. 查询高速缓冲SELECT选项 5.13.3. 查询高速缓冲配置 5.13.4. 查询高速缓冲状态和维护 6. MySQL中的复制 6.1. 复制介绍 6.2. 复制实施...

    MySQL 5.1官方简体中文参考手册

    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 5.1参考手册

    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 5.1参考手册中文版

    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 5.1参考手册 (中文版)

    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 优化以及 中文乱码处理问题。不错的东东。

    MySQL数据库查询性能优化策略

    MySql中提高性能的一个最有效的方式就是对数据表设计合理的索引. 索引提供了高效访问数据的方法,并且加快查询速度. 如果查询时没有使用索引,那么查询语句将扫描表中所有的记录.在数据量大的时候,这样查询速度会很慢....

Global site tag (gtag.js) - Google Analytics