`
heweina2007
  • 浏览: 68805 次
  • 性别: 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 树形结构查询

    递归存储过程是一种特殊的存储过程,可以递归调用自身,以实现树形结构的查询。递归存储过程可以根据需要设置递归深度,以控制查询的深度。 在上面的例子中,我们定义了两个存储过程:findLChild 和 iterative。...

    mysql 特殊命令总结

    根据提供的文件信息,我们可以整理出以下几个重要的MySQL特殊命令知识点: ### 1. 设置结果集字符集:`set character_set_result=utf-8;` **知识点详解:** - **命令功能**:此命令用于设置MySQL查询结果集的字符...

    MySql高级Sql查询

    当我们谈论“MySQL高级SQL查询”时,通常是指那些超越基础SELECT、INSERT、UPDATE和DELETE语句的复杂查询技巧。这些技巧包括联接操作、子查询、聚合函数、窗口函数、集合操作、存储过程和触发器等。本资料包中的" ...

    MYSQL查询调优实战

    T树通过一种特殊的树形结构来优化多列索引的性能,但这种索引在MySQL中不常用,通常用在某些特定的数据库系统中,因为其维护成本和实现复杂度较高。 Hash Index是基于哈希表实现的索引,它通过哈希函数快速定位数据...

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

    ### PHP、JavaScript、HTML、MySQL特殊字符处理 在开发Web应用程序时,经常需要处理各种特殊字符,尤其是在PHP、JavaScript、HTML以及MySQL等技术栈中。本文将详细介绍这些技术栈中特殊字符的处理方法。 #### 一、...

    浅谈MySQL模糊查询中通配符的转义

    sql中经常用like进行模糊查询,而模糊查询就要用到百分号“%”,下划线“_”这些通配符,其中“%”匹配任意多个字符,“_”匹配单个字符。如果我们想要模糊查询带有通配符的字符串,如“60%”,“user_name”,就...

    mysql数据表模糊查询

    ### MySQL 数据表模糊查询详解 #### 一、引言 在进行MySQL数据库操作时,查询功能是最常用的操作之一。为了满足复杂多样的查询需求,MySQL提供了多种查询方式,包括精确查询与模糊查询。模糊查询是一种非常实用的...

    mysql语句集合包括模糊查询索引函数

    在描述中提到的“模糊查询”是SELECT语句的一种特殊形式,它允许我们使用通配符来查找不完全匹配的数据。在MySQL中,通配符主要有两个:“%”代表零个、一个或多个字符,而“_”则代表单个字符。例如,"LIKE 'abc%'...

    mysql 查询表中多少个字段

    在MySQL中,`INFORMATION_SCHEMA`是一个特殊的只读数据库,它包含了所有其他数据库的元数据。其中`COLUMNS`表提供了关于每个表中列(字段)的信息。通过查询这个表,我们可以轻松地获取任何表中字段的数量。 ##### ...

    mysql临时表用法分析【查询结果可存在临时表中】

    MySQL临时表是一种在会话范围内创建的特殊类型的表,它仅对当前会话可见,并在会话结束时自动删除。这种技术在处理复杂查询、中间数据处理或报表生成时非常有用,因为它允许用户将查询结果暂存起来,以便进一步处理...

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

    在MySQL中保存微信昵称,特别是包含特殊字符如表情符号(Emoji)的昵称时,可能会遇到插入数据时报错的问题。这是因为MySQL的默认UTF-8字符集(实际上是`utf8`,并非完全标准的UTF-8)仅支持最多3字节的字符,而一些...

    如何在MySQL中判断中文字符?

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

    mysql根据汉字首字母搜索

    在数据库表中没有录入汉字对应的拼音首字母的情况下,进行汉字拼音首字母搜索,下载文本后 直接在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数据库查询优化技术

    3. **查询语句优化**:尽量避免在WHERE子句中使用NULL,因为NULL值处理特殊,可能导致索引无法使用。尽量减少子查询,优先考虑使用JOIN操作,因为子查询可能会导致多次数据扫描。 4. **JOIN优化**:优化JOIN操作,...

    新版 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弱口令检查方法

    - `mysql`命令行工具是MySQL的一个常用工具,可以用来执行SQL语句、查询数据等操作。 - `-N`参数用于禁止自动换行,使得输出更易于解析。 5. **密码安全策略**: - 在实际应用中,建议采用复杂的密码策略,比如...

    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离线安装包 mysql5.7_kylin_mips64el.zip

    MySQL 5.7是MySQL的一个重要版本,它包含了许多性能提升和新功能,比如InnoDB存储引擎的改进,支持更大的表和索引,以及更强大的SQL查询优化器。对于银河麒麟和龙芯平台,这个版本的MySQL可能已经过特殊优化,以确保...

    mysql更改密码 mysql 更改密码

    例如,要增加一个名为 test 的用户,让其可以在任何主机上登录,具有对所有数据库的查询、插入、修改、删除权限,可以使用以下命令: grant select,insert,update,delete on *.* to test@"%" Identified by "123"; ...

Global site tag (gtag.js) - Google Analytics