`

mysql 语句case when

阅读更多
表的创建



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';
分享到:
评论

相关推荐

    case when和sum case when 写法及拼接字段

    ### Case When 用法 在 SQL 查询语言中,`CASE WHEN` 结构是一种非常有用的工具,可以用来根据条件返回不同的值。它的工作原理类似于编程语言中的 `if...else` 语句,但在 SQL 中用于创建动态列或进行复杂的条件...

    详细解析 mysql 中的 case when 语句的使用

    ### MySQL中的Case When语句详解 #### 一、引言 在MySQL中,`CASE WHEN`语句是一种非常有用的控制流程语句,它允许开发者根据不同的条件返回不同的结果。这在处理复杂的数据筛选和聚合任务时特别有用。本文将详细...

    case乱码解决

    mysql 中case when 遇到乱码解决。查询语句中含有case引起中文乱码解决方法

    MySQL 的CASE WHEN 语句使用说明

    MySQL中的CASE WHEN语句是一种非常强大的条件控制工具,它允许你在SQL查询中根据不同的条件返回不同的结果。CASE语句在数据库处理中起到了类似编程语言中条件判断的作用,使得你可以更灵活地处理数据。 简单CASE...

    MySQL的CASE WHEN语句的几个使用实例

    MySQL中的CASE WHEN语句是一种非常实用的SQL构造,它允许你在单个查询中根据不同的条件执行不同的操作,比如数据转换、分类或者计算。这个语句主要用于处理复杂的逻辑判断,尤其在需要对数据进行条件性处理时,CASE ...

    MySQL数据库:流程控制语句case.pptx

    流程控制语句CASE 课程目标 1)理解 —— CASE语句的语法规则; 2)掌握 —— CASE语句的使用方法; case语句 CASE语句语法格式为: 第一种: CASE case_value WHEN when_value THEN statement_list [WHEN when_...

    mysql case when group by 实例详解

    MySQL中的`CASE WHEN`语句是一种条件判断表达式,它在SQL查询中起到了类似编程语言中`switch-case`或`if-else`的作用。这个功能强大的工具允许你在单个查询中根据不同的条件返回不同的结果值,非常适合数据分析和...

    MySQL性能优化的最佳21条经验

    6. **存储过程和预编译语句**:存储过程可以减少网络传输,预编译语句能提高执行效率,避免解析SQL的开销。 7. **定期分析与维护**:使用ANALYZE TABLE更新统计信息,OPTIMIZE TABLE整理碎片,保持表的健康状态。 ...

    mysql存储过程之case语句用法实例详解

    MySQL中的CASE语句是SQL语言中的一个重要组成部分,它在存储过程和复杂查询中扮演着条件判断的角色,使得代码更加简洁易读。CASE语句提供了两种形式:简单CASE和可搜索CASE。 1. 简单CASE语句: 简单CASE语句主要...

    MySQL中使用case when 语句实现多条件查询的方法

    在MySQL数据库中,`CASE WHEN` 语句是一种强大的条件表达式,用于在查询中进行复杂的逻辑判断。本文将深入探讨如何使用`CASE WHEN`语句实现多条件查询,特别是针对给定的示例场景。 首先,让我们了解`CASE WHEN`的...

    MySQL排序中使用CASE WHEN的方法示例

    `CASE WHEN` 是一个非常强大的工具,它允许我们在SQL语句中进行条件判断,根据不同的条件返回不同的结果。在MySQL中,我们可以利用`CASE WHEN`来实现自定义排序,以满足特定的业务需求。以下是一个关于如何在MySQL...

    MySQL 中CASE-WHEN 的应用.pdf

    为了统计每个调查对象对每个问题的得分,我们需要使用GROUP BY语句按问题分组,然后利用CASE-WHEN处理复杂的统计逻辑。 2. CASE-WHEN的实现方案 CASE-WHEN有两种基本形式:简单CASE和搜索CASE。 2.1 简单CASE...

    SqlServer使用 case when 解决多条件模糊查询问题

    在SQL Server中,`CASE WHEN` 语句是一种强大的逻辑表达式,用于处理基于不同条件的复杂查询。在多条件模糊查询中,`CASE WHEN` 可以避免在程序端或数据库端拼接SQL字符串,从而减少代码量,提高安全性,并避免SQL...

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

    MySQL提供了丰富的内置函数,包括算术函数(如SUM、AVG)、字符串函数(如CONCAT、SUBSTRING)、日期/时间函数(如DATE_ADD、NOW)、逻辑函数(如IF、CASE WHEN)等。这些函数极大地增强了SQL语句的功能性和灵活性,...

    MySQL中的if和case语句使用总结

    Mysql的if既可以作为表达式用,也可在存储过程中作为流程控制语句使用,如下是做为表达式使用: IF表达式 代码如下: IF(expr1,expr2,expr3) 如果 expr1 是TRUE (expr1 &lt;&gt; 0 and expr1 &lt;&gt; NULL),则 IF()的...

Global site tag (gtag.js) - Google Analytics