SQL语言的CASE语句备忘
概述:
SQL语句中的CASE语句与高级语言中的switch语句,是标准SQL的语法,适用与一个条件判断有多种值的情况下分别执行不同的操作。灵活应用CASE语句可以使SQL语句变得简洁易读,下面在DB2环境下通过一个简单的查询来展示SQL CASE语句的强大功能。
表:T_ActivityConsume
award |
consumeTime |
partnerID |
markValue |
1 |
2009-01-05 13:14:43 |
11 |
100 |
1 |
2009-01-05 13:14:43 |
11 |
100 |
3 |
2009-01-05 13:14:43 |
11 |
100 |
1 |
2009-01-06 13:14:43 |
11 |
100 |
1 |
2009-01-06 13:14:43 |
11 |
100 |
2 |
2009-01-17 13:14:43 |
11 |
100 |
2 |
2009-01-17 13:14:43 |
11 |
100 |
2 |
2009-01-17 13:14:43 |
11 |
100 |
1 |
2009-01-17 13:14:43 |
11 |
100 |
select award ,
COUNT(CASE when DATE(consumeTime)='2009-01-05' then award end) as '1月5日',
count(CASE when DATE(consumeTime)='2009-01-06' then award end) as '1月6日',
count(CASE when DATE(consumeTime)='2009-01-07' then award end) as '1月7日'
from T_ActivityConsume where partnerID='11' group by award
执行后:
award |
partnerID |
1月5日 |
1月6日 |
1月7日 |
1 |
11 |
2 |
2 |
1 |
2 |
11 |
0 |
0 |
3 |
3 |
11 |
1 |
0 |
0 |
4 |
11 |
0 |
0 |
0 |
5 |
11 |
0 |
0 |
0 |
case和swith类似。
分享到:
相关推荐
9. **类型转换**:在处理查询结果时,可能需要将MySQL数据类型转换为C语言的数据类型,如`mysql_fetch_lengths()`获取每列的长度,有助于正确地处理BLOB和VARBINARY等变长类型。 10. **性能优化**:使用`mysql_...
3. **窗口函数**:新增的窗口函数支持,使得复杂的查询操作变得更加简单高效。 4. **多表删除**:支持同时从多个表中删除数据,简化了涉及多个表的删除操作。 5. **优化器改进**:查询优化器得到了进一步优化,...
随着MYSQL版本的更新,尤其是MYSQL 8.0之后,开始支持公用表表达式(CTE)和WITH RECURSIVE语法,这使得在MYSQL中进行递归查询变得简单而直接。 在上述三种数据库系统中实现递归查询的示例代码通常如下: ORACLE中...
8. **更好的行格式**:引入了DYNAMIC行格式,提供更高效的数据存储,特别是对于包含变长字段的表。 9. **增强的加密**:MySQL 8.0支持TLS 1.3协议,提供了更强大的加密机制,确保数据传输的安全性。 总结: MySQL ...
- 作用:确保列或列组合的值是唯一的。 - 特性:一个表可以有多个唯一约束,允许包含空值(`NULL`)。 - **区别**: - 主键是唯一约束的一种特殊情况,但同时具有不可为空的限制。 - 主键在创建时会自动建立索引,...
文档最后还列出了对 MySQL 发展做出贡献的人们,包括开发者、文档作者、翻译者和支持 MySQL 的工具及软件包等。这些信息体现了 MySQL 社区的开放性和协作精神。 通过以上分析可以看出,MySQL 5.6 官方文档不仅提供...
10. **InnoDB 存储引擎升级**:包括自增列重置、更快的行锁定以及更好的空间索引支持。 ### 一键安装脚本的作用: 一键安装脚本通常包含以下步骤: 1. **环境检查**:检测系统是否满足MySQL 8.0的硬件和软件要求。...
例如,可以通过某一列值的范围来决定行数据属于哪个分区。 - **垂直分区(Vertical Partitioning)**:按照列来进行分区,不同的列可以存储在不同的表中。这种方式适用于某些列经常一起使用的情况。 在MySQL 5.1及...
- **功能**:在查询结果集中定位至特定行。 - **使用场景**:处理大型结果集时,可精确控制读取位置。 #### 7. `mysql_debug()` - **功能**:用于调试,将给定字符串推送到调试队列。 - **使用场景**:开发阶段用于...
`MYSQL_ROW`实际上是一个指向字符数组的指针数组,每个元素对应一行数据中的一列。通过`lengths`数组,我们可以获取每列数据的实际长度,这对于处理变长数据类型(如VARCHAR)尤为重要。 在实际编程中,我们还需要...
- **关系型数据库**:在 MySQL 中,“关系型”意味着数据被组织成一个或多个表格的形式,这些表格由行和列构成,每张表代表了一种实体或对象,并且通过键来关联不同的表。 - **表头 (Header)**:表头即表格的列名,...
ExecuteScalar返回查询结果的第一行第一列,常用于统计或获取单个值;FillDataSet则将查询结果填充到DataSet对象中,便于进行更复杂的处理。 在MysqlHelper.cs中,我们可以看到这些方法的实现。例如,...
1. **窗口函数**:MySQL 8.0 引入了窗口函数,这使得在SQL查询中进行行级计算变得更加容易。窗口函数允许你在数据集上执行聚合操作,如计算移动平均或排名,而无需分组或子查询。 2. **增强的JSON支持**:MySQL 8.0...
4. **行格式升级**:默认采用DYNAMIC行格式,提高了存储效率,支持更大的列数和更大的BLOB/TEXT值。 5. **增强的安全性**:提供了密码过期策略、强制加密连接、更好的权限管理以及改进的审计日志功能。 6. **改进...
MySQL是一种广泛使用的开源关系型数据库管理系统(RDBMS),它使用SQL(Structured Query Language)作为数据查询语言。MySQL因其性能高、稳定性强且易于使用等特点,在Web应用开发中被广泛采用。 ### 安装与配置...
- **定长与变长字段的分离**:将定长字段(如整型、日期时间类型)与变长字段(如VARCHAR、TEXT)分开存储,可以提升查询效率,因为定长字段处理更快。 - **常用与不常用字段分离**:将不经常使用的字段独立出来,...
MySQL是一种广泛使用的开源关系型数据库管理系统(RDBMS),它基于结构化查询...结合实际操作,不断练习,将使你在MySQL查询方面变得更加熟练。记得实践是最好的老师,尝试解决不同的查询问题,会让你的技能不断提升。
然而,B树索引不能处理某些特定的查询,比如查找所有键值末尾数字为零的行。 #### 字符串索引 字符串索引的排序顺序由字符集(collation)定义。例如,“AAAA”小于“AAAB”。在使用前缀LIKE(如`LIKE 'ABC%'`)时...
MySQL-Front则是一款功能强大的MySQL数据库管理工具,它为用户提供了图形化的用户界面,使得数据库的管理和操作变得更加直观和便捷。MySQL-Front支持多种数据库操作,包括数据查询、编辑、导入导出、备份恢复以及...
你可以通过`next()`方法移动到下一行,然后通过`getString()`, `getInt()`, 等方法获取列值。 5. **关闭资源**:在完成数据库操作后,记得关闭所有打开的资源,如`ResultSet`, `Statement` 和 `Connection`,以避免...