今天群里有人了一个问题,大概是要实现如下功能:
实现查询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字段的格式包含具体时间,查询条件不包含时间只包含日期
相关推荐
递归存储过程是一种特殊的存储过程,可以递归调用自身,以实现树形结构的查询。递归存储过程可以根据需要设置递归深度,以控制查询的深度。 在上面的例子中,我们定义了两个存储过程:findLChild 和 iterative。...
根据提供的文件信息,我们可以整理出以下几个重要的MySQL特殊命令知识点: ### 1. 设置结果集字符集:`set character_set_result=utf-8;` **知识点详解:** - **命令功能**:此命令用于设置MySQL查询结果集的字符...
当我们谈论“MySQL高级SQL查询”时,通常是指那些超越基础SELECT、INSERT、UPDATE和DELETE语句的复杂查询技巧。这些技巧包括联接操作、子查询、聚合函数、窗口函数、集合操作、存储过程和触发器等。本资料包中的" ...
T树通过一种特殊的树形结构来优化多列索引的性能,但这种索引在MySQL中不常用,通常用在某些特定的数据库系统中,因为其维护成本和实现复杂度较高。 Hash Index是基于哈希表实现的索引,它通过哈希函数快速定位数据...
### PHP、JavaScript、HTML、MySQL特殊字符处理 在开发Web应用程序时,经常需要处理各种特殊字符,尤其是在PHP、JavaScript、HTML以及MySQL等技术栈中。本文将详细介绍这些技术栈中特殊字符的处理方法。 #### 一、...
sql中经常用like进行模糊查询,而模糊查询就要用到百分号“%”,下划线“_”这些通配符,其中“%”匹配任意多个字符,“_”匹配单个字符。如果我们想要模糊查询带有通配符的字符串,如“60%”,“user_name”,就...
### MySQL 数据表模糊查询详解 #### 一、引言 在进行MySQL数据库操作时,查询功能是最常用的操作之一。为了满足复杂多样的查询需求,MySQL提供了多种查询方式,包括精确查询与模糊查询。模糊查询是一种非常实用的...
在描述中提到的“模糊查询”是SELECT语句的一种特殊形式,它允许我们使用通配符来查找不完全匹配的数据。在MySQL中,通配符主要有两个:“%”代表零个、一个或多个字符,而“_”则代表单个字符。例如,"LIKE 'abc%'...
在MySQL中,`INFORMATION_SCHEMA`是一个特殊的只读数据库,它包含了所有其他数据库的元数据。其中`COLUMNS`表提供了关于每个表中列(字段)的信息。通过查询这个表,我们可以轻松地获取任何表中字段的数量。 ##### ...
MySQL临时表是一种在会话范围内创建的特殊类型的表,它仅对当前会话可见,并在会话结束时自动删除。这种技术在处理复杂查询、中间数据处理或报表生成时非常有用,因为它允许用户将查询结果暂存起来,以便进一步处理...
在MySQL中保存微信昵称,特别是包含特殊字符如表情符号(Emoji)的昵称时,可能会遇到插入数据时报错的问题。这是因为MySQL的默认UTF-8字符集(实际上是`utf8`,并非完全标准的UTF-8)仅支持最多3字节的字符,而一些...
mysql> SHOW VARIABLES LIKE "%version%"; + ————————-+——————————+ | Variable_name | Value | + ————————-+——————————+ | protocol_version | 10
在数据库表中没有录入汉字对应的拼音首字母的情况下,进行汉字拼音首字母搜索,下载文本后 直接在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...
3. **查询语句优化**:尽量避免在WHERE子句中使用NULL,因为NULL值处理特殊,可能导致索引无法使用。尽量减少子查询,优先考虑使用JOIN操作,因为子查询可能会导致多次数据扫描。 4. **JOIN优化**:优化JOIN操作,...
│ 7_MySQL字表分区和NULL值特殊处理.mp4 │ 8_MySQL表分区管理.mp4 │ 作业.docx │ 作业及答案.docx │ ├─新版MySQL DBA综合实战班 第09天 │ 1_课堂作业讲解.mp4 │ 2_MySQL复制原理.mp4 │ 3_MySQL传统复制...
- `mysql`命令行工具是MySQL的一个常用工具,可以用来执行SQL语句、查询数据等操作。 - `-N`参数用于禁止自动换行,使得输出更易于解析。 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 5.7是MySQL的一个重要版本,它包含了许多性能提升和新功能,比如InnoDB存储引擎的改进,支持更大的表和索引,以及更强大的SQL查询优化器。对于银河麒麟和龙芯平台,这个版本的MySQL可能已经过特殊优化,以确保...
例如,要增加一个名为 test 的用户,让其可以在任何主机上登录,具有对所有数据库的查询、插入、修改、删除权限,可以使用以下命令: grant select,insert,update,delete on *.* to test@"%" Identified by "123"; ...