表的创建
CREATE TABLE `lee` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`name` char(20) DEFAULT NULL,
`birthday` datetime DEFAULT NULL,
PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8
数据插入:
insert into lee(name,birthday) values ('sam','1990-01-01');
insert into lee(name,birthday) values ('lee','1980-01-01');
insert into lee(name,birthday) values ('john','1985-01-01');
使用case when语句
1。
select name,
case
when birthday<'1981' then 'old'
when birthday>'1988' then 'yong'
else 'ok' END YORN
from lee;
2。
select NAME,
case name
when 'sam' then 'yong'
when 'lee' then 'handsome'
else 'good' end
from lee;
当然了case when语句还可以复合
3。
select name,birthday,
case
when birthday>'1983' then 'yong'
when name='lee' then 'handsome'
else 'just so so ' end
from lee;
在这里用sql语句进行日期比较的话,需要对年加引号。要不然可能结果可能和预期的结果会不同。我的mysql版本5.1
当然也可以用year函数来实现,以第一个sql为例
select NAME,
CASE
when year(birthday)>1988 then 'yong'
when year(birthday)<1980 then 'old'
else 'ok' END
from lee;
create table penalties
(
paymentno INTEGER not NULL,
payment_date DATE not null,
amount DECIMAL(7,2) not null,
primary key(paymentno)
)
insert into penalties values(1,'2008-01-01',3.45);
insert into penalties values(2,'2009-01-01',50.45);
insert into penalties values(3,'2008-07-01',80.45);
1.#对罚款登记分为三类,第一类low,包括大于0小于等于40的罚款,第二类moderate大于40
#到80之间的罚款,第三类high包含所有大于80的罚款。
2.#统计出属于low的罚款编号。
第一道题的解法与上面的相同
select paymentno,amount,
case
when amount>0 and amount<=40 then 'low'
when amount>40 and amount<=80 then 'moderate'
when amount>80 then 'high'
else 'incorrect' end lvl
from `penalties`
2.#统计出属于low的罚款编号。重点看这里的解决方法
方法1.
select paymentno,amount
from `penalties`
where case
when amount>0 and amount<=40 then 'low'
when amount>40 and amount<=80 then 'moderate'
when amount>80 then 'high'
else 'incorrect' end ='low';
方法2
select *
from (select paymentno,amount,
case
when amount>0 and amount<=40 then 'low'
when amount>40 and amount<=80 then 'moderate'
when amount>80 then 'high'
else 'incorrect' end lvl
from `penalties`) as p
where p.lvl='low';
分享到:
相关推荐
MySQL函数手册是一部非常重要的参考资料,尤其对于数据库管理员和开发人员来说,它提供了全面而详细的MySQL数据库函数使用指南。这份手册涵盖了MySQL中各种内置函数的功能、语法以及使用示例,是学习和工作中不可或...
### MySQL中的Case When语句详解 #### 一、引言 在MySQL中,`CASE WHEN`语句是一种非常有用的控制流程语句,它允许开发者根据不同的条件返回不同的结果。这在处理复杂的数据筛选和聚合任务时特别有用。本文将详细...
在 SQL 查询语言中,`CASE WHEN` 结构是一种非常有用的工具,可以用来根据条件返回不同的值。它的工作原理类似于编程语言中的 `if...else` 语句,但在 SQL 中用于创建动态列或进行复杂的条件判断。 #### 基本语法 ...
MySQL中的CASE语句是SQL语言中的一个重要组成部分,它在存储过程和复杂查询中扮演着条件判断的角色,使得代码更加简洁易读。CASE语句提供了两种形式:简单CASE和可搜索CASE。 1. 简单CASE语句: 简单CASE语句主要...
在MySQL数据库中,`CASE WHEN` 语句是一种强大的条件表达式,用于在查询中进行复杂的逻辑判断。本文将深入探讨如何使用`CASE WHEN`语句实现多条件查询,特别是针对给定的示例场景。 首先,让我们了解`CASE WHEN`的...
MySQL中的CASE WHEN语句是一种非常强大的条件控制工具,它允许你在SQL查询中根据不同的条件返回不同的结果。CASE语句在数据库处理中起到了类似编程语言中条件判断的作用,使得你可以更灵活地处理数据。 简单CASE...
在这个“mysql语句集合包括模糊查询索引函数”中,我们将深入探讨SQL中的关键概念,特别是与模糊查询、索引和函数相关的知识。 首先,SQL语句主要分为四大类:SELECT(查询)、INSERT(插入)、UPDATE(更新)和...
MySQL中的`CASE WHEN`语句是一种条件判断表达式,它在SQL查询中起到了类似编程语言中`switch-case`或`if-else`的作用。这个功能强大的工具允许你在单个查询中根据不同的条件返回不同的结果值,非常适合数据分析和...
MySQL中的CASE-WHEN是SQL语言中的一个非常强大的条件表达式,用于在查询中实现复杂的条件判断和逻辑操作。它在数据分析、报表生成以及各种业务统计中有着广泛的应用。本文将深入探讨CASE-WHEN的用法,并结合一个问卷...
MySQL中的CASE WHEN语句是一种非常实用的SQL构造,它允许你在单个查询中根据不同的条件执行不同的操作,比如数据转换、分类或者计算。这个语句主要用于处理复杂的逻辑判断,尤其在需要对数据进行条件性处理时,CASE ...
4. **查询优化**:尽量避免在WHERE子句中使用复杂的表达式和函数,这可能导致无法使用索引。使用EXPLAIN分析查询计划,找出潜在瓶颈。 5. **JOIN操作优化**:尽量减少JOIN操作,如果必须使用,确保JOIN条件有索引,...
`CASE WHEN` 是一个非常强大的工具,它允许我们在SQL语句中进行条件判断,根据不同的条件返回不同的结果。在MySQL中,我们可以利用`CASE WHEN`来实现自定义排序,以满足特定的业务需求。以下是一个关于如何在MySQL...
在SQL中,对数据进行行列转换是数据分析过程中常见的需求,特别是在报表展示或数据...在某些数据库系统中,如MySQL,不支持内置的 `PIVOT` 函数,此时可以使用 `CASE...WHEN` 或者自定义的子查询和联接来实现类似功能。
在SQL语言中,MySQL提供了丰富的函数来处理数据库中的数据,包括条件判断、转换与编码、字符串操作等。这里我们将详细探讨这些知识点。 首先,我们来看`CASE`语句,它是SQL中的一个条件判断表达式。它允许根据不同...
在本节中,我们将详细介绍 MySQL 中的分组函数和分组查询,包括 SUM、AVG、MAX、MIN 等函数,以及 GROUP BY 语句的使用。 一、分组函数 分组函数是 MySQL 中的一种聚合函数,用于对数据进行聚合和分析。常见的分组...
Mysql的if既可以作为表达式用,也可在存储过程中作为流程控制语句使用,如下是做为表达式使用: IF表达式 代码如下: IF(expr1,expr2,expr3) 如果 expr1 是TRUE (expr1 <> 0 and expr1 <> NULL),则 IF()的...
在 MySQL 中,没有内置的 PIVOT 函数,但可以通过 CASE 或 GROUP_CONCAT 函数来实现类似效果。以下是一个简单的示例: 假设我们有一个销售数据表 `sales`: ```sql CREATE TABLE sales ( product_id INT, year ...