精华内容
下载资源
问答
  • when的所有用法
    千次阅读
    2019-09-26 08:54:06
    建表 插入数据
    CREATE TABLE course ( id INT ( 20 ), sid INT ( 20 ), course VARCHAR ( 255 ), score INT ( 20 ) );
    
    INSERT INTO `course` VALUES (1, 1, '语文', 43);
    INSERT INTO `course` VALUES (2, 1, '数学', 55);
    INSERT INTO `course` VALUES (3, 2, '语文', 77);
    INSERT INTO `course` VALUES (4, 2, '数学', 88);
    INSERT INTO `course` VALUES (5, 3, '语文', 98);
    INSERT INTO `course` VALUES (6, 3, '数学', 65);
    
    一、case when then else end的用法
    (1)基本用法
    case    
        when 条件1 then 条件成立的内容
        when 条件2 then 条件成立执行的内容
        else 其他条件
    end
    
    (2)在update更新中使用
       UPDATE TABLE 
       SET 字段 1 =
    			CASE
    			    WHEN 条件 1 THEN 值 1 
    			    WHEN 条件 2 THEN 值 2 ELSE 值 3 
    			END 
    	WHERE
    	
    (3)在select查询中使用
    select 字段1, 字段2,       
            case 字段3     
                when 值1 then 新值       
                when 值2 then 新值      
            end as 重新命名字段3的名字       
    from table      
    
    (4)在where条件中使用
        select 字段1,字段2,字段3      
        from table
        where
            case
                when 条件1 then where后的条件
                when 条件2 then where后的条件
                else where后想加的条件
            end
    -- 举例说明:语文成绩找到及格的,数学成绩找出来不及格的,相当于找到偏科偏语文的学生的学生
    select *       
    from course
    where 
            case 
                when course = '语文' then score>60
                when course = '数学' then course<60
            end
    (5)在GROUP BY分组中使用
    select 字段1,字段2,字段3      
    from table
    where 条件
    group by 
        case
            when 条件1 then 字段x
            when 条件2 then 字段y
        end
     说明:满足条件1以字段x分组,满足条件2以字段y分组。
    
    (6)在Order By排序中使用
    select 字段1,字段2,字段3      
    from table
    where 条件
    order by 
        case
            when 条件1 then 字段x
            when 条件2 then 字段y
        end
     说明:满足条件1以字段x排序,满足条件2以字段y排序。
     
    -- 所有数学课程成绩 大于 语文课程成绩的学生的学号
    -- 第1步、使用case when来进行行列转换
        select sid 学号,
    			case 
    				WHEN course='语文' then score else 0
    			end as 语文分数,
    			case 
    				WHEN course='数学' then score else 0
    			end as 数学分数
    	from course
    
    -- 第2步 根据学号进行合并,将同一个学生的数学和语文成绩放在一行显示
    -- " case WHEN course='语文' then score else 0 end "是完整的case when语句
    SELECT
    	sid 学号,
    	MAX( CASE WHEN course = '语文' THEN score ELSE 0 END ) 语文分数,
    	MAX( CASE WHEN course = '数学' THEN score ELSE 0 END ) 数学分数 
    FROM
    	course 
    GROUP BY
    	sid
    
    -- 第3步 从行列转换的表中取出题目中要求的数据
    SELECT a.* from 
    (
    SELECT
    	sid 学号,
    	MAX( CASE WHEN course = '语文' THEN score ELSE 0 END ) 语文分数,
    	MAX( CASE WHEN course = '数学' THEN score ELSE 0 END ) 数学分数 
    FROM
    	course 
    GROUP BY
    	sid
    ) as a
    WHERE a.语文分数<a.数学分数
    
    

     

    更多相关内容
  • case when then语句用法

    2018-04-18 09:40:46
    该语句的执行过程是:将CASE后面表达式的值与各WHEN子句中的表达式的值进行比较,如果两者相等,则返回THEN后的表达式的值,然后跳出CASE语句,否则返回ELSE子句中的表达式的值。ELSE子句是可选项。当CASE语句中不...
  • 主要介绍了sql学习之CASE WHEN THEN ELSE END的用法,需要的朋友可以参考下
  • mysql中case when用法

    千次阅读 2022-05-01 17:31:24
    case when的使用情况有三种 等值转换 范围转换 列转行操作 1.等值转换 设计数据库的时候总会把用户的性别用int存储('0’为女,'1’为男),但是怎么把它抓换成汉字显示呢? select name as '姓名', (case ...

    case when的基本使用:

    Case when 的用法: 一旦满足了某一个WHEN, 则这一条数据就会退出CASE WHEN , 而不再考虑 其他CASE。

    Case when 的用法

    -- -搜索Case函数:

    Case函数(Case搜索函数): 判断表达式的真假,如果为真,返回结果;如果为假,返回else值;如果未定义else值,则返回空值(使用条件确定返回值);

    select name,id,(case when id=34 then salary*2

                                        when id=45 then salary*3

                                        else salary

                                        end) new_salary

    from semp;

    -- -简单Case函数

    简单Case表达式的作用是: 使用表达式确定返回值:

    select id,name,(case sex

           when '1' then '男'

           when '2' then '女'

            else '其他' end)

    from student;

     这两种方法可以实现相同的功能. 简单Case函数的写法比较简单,但是和case搜索函数相比,功能方面会有些限制,比如判断式。

    还有一个需要注意的问题,Case函数只返回第一个符合条件的值,剩下的Case部分将会被自动忽略。

    比如下面 SQL,将无法得到第二个结果:(差永远获取不到)。

    sql如下

    case when colum in ('a', 'b') then '优秀'

             when colum in ('a') then '差'

              else '其他' end 
     

    case when的使用场景有三种:

    • 等值转换
    • 范围转换
    • 列转行操作

    1.等值转换

    设计数据库的时候总会把用户的性别用int存储('0’为女,'1’为男),但是怎么把它抓换成汉字显示呢?

    select name as '姓名',
    (case sex when 0 then '女' else '男' end) as '性别'
    from test.student;
    

    查询结果:

    2.范围转换

    按照用户成绩显示优(90分以上)、良(80分-90分)、及格(60分-80分)、不及格(60分一下):

     sql语句:

    select name as '姓名',
    (case when score > 90 then '优' when score >= 80 then '良' when score >= 60 then '及格' else '不及格' end) as '等级'
    from test.stu_score;
    

    运行结果:

    3.列转行操作

    表一

    +----------+---------+------+
    | class_id | grade   | rate |
    +----------+---------+------+
    | abc123   | primary | 70%  |
    | abc123   | middle  | 65%  |
    | abc123   | high    | 72%  |
    | hjkk86   | primary | 69%  |
    | hjkk86   | middle  | 63%  |
    | hjkk86   | high    | 74%  |
    +----------+---------+------+
    

     表二

    +----------+---------+--------+------+
    | class_id | primary | middle | high |
    +----------+---------+--------+------+
    | abc123   | 70%     | 65%    | 72%  |
    | hjkk86   | 69%     | 63%    | 74%  |
    +----------+---------+--------+------+
    

     将表一转换成表二显示:
    第一步 其中三条CASE WHEN 语句是同步执行的

    select class_id,
    (case when grade = 'primary' then rate else 0 end) as 'primary',
    (case when grade = 'middle' then rate else 0 end) as 'middle',
    (case when grade = 'high' then rate else 0 end) as 'high'
    from mst_class;
    +----------+---------+--------+------+
    | class_id | primary | middle | high |
    +----------+---------+--------+------+
    | abc123   | 70%     | 0      | 0    |
    | abc123   | 0       | 65%    | 0    |
    | abc123   | 0       | 0      | 72%  |
    | hjkk86   | 69%     | 0      | 0    |
    | hjkk86   | 0       | 63%    | 0    |
    | hjkk86   | 0       | 0      | 74%  |
    +----------+---------+--------+------+
    

    第二步 按class_id分组,求最大值(即去掉0)

    select class_id,
    max(case when grade = 'primary' then rate else 0 end) as 'primary',
    max(case when grade = 'middle' then rate else 0 end) as 'middle',
    max(case when grade = 'high' then rate else 0 end) as 'high'
    from mst_class
    group by class_id;
    +----------+---------+--------+------+
    | class_id | primary | middle | high |
    +----------+---------+--------+------+
    | abc123   | 70%     | 65%    | 72%  |
    | hjkk86   | 69%     | 63%    | 74%  |
    +----------+---------+--------+------+
    

    展开全文
  • 本文通过实例代码给大家介绍了Mybatis choose when用法,需要的的朋友参考下吧
  • 1. CASE WHEN 表达式有两种形式 代码如下:–简单Case函数 CASE sex ... CASE WHEN 在语句中不同位置的用法2.1 SELECT CASE WHEN 用法 代码如下:SELECT grade, COUNT (CASE WHEN sex = 1 THEN 1 /*sex 1为男生,2位
  • CASE When用法

    2021-12-28 16:02:39
    1.1、用法一case when搜索函数 数据库查询结果是woman和man,转为男和女 SELECT CASE WHEN SEX = 'WOMAN' THEN '女' WHEN SEX = 'MAN' THEN '男' END FROM T_SYS_USER 注:给转换后的列起别名: CASE WHEN...

    一、case when主要用来转换显示

    1.1、用法一case when搜索函数

    数据库查询结果是woman和man,转为男和女

    SELECT
    CASE WHEN SEX = 'WOMAN' THEN '女' 
    	 WHEN SEX = 'MAN' THEN '男' END 
    FROM
    	 T_SYS_USER
    	 
    注:给转换后的列起别名:
    	CASE WHEN SEX = 'WOMAN' THEN '女' 
    	 WHEN SEX = 'MAN' THEN '男' END as 性别
    

    结果展示: 在这里插入图片描述

    1.2 case的简单函数

    简单函数形式:case 列名 when ‘条件’ then ‘显示结果’

    SELECT
    CASE SEX WHEN 'WOMAN' THEN '女' 
    		 WHEN 'MAN' THEN '男' 
    		 ELSE '其他' END as 性别
    FROM
    		T_SYS_USER 
    

    1.3 case when放在where后面需要注意的情况

    在where后面这样使用将会报错:

    select * 
    from t1, t2
    where t2.name in
    CASE
        when t1.id = 0 then ('aaa', 'bbb')
        when t1.id = 1 then ('bbb', 'ccc')
        when t1.id = 2 then ('ccc', 'ddd')
    END
    

    正确写法:

    select * 
    from t1, t2
    where t2.name in
    CASE
        when t1.id = 0 then B.name in ('aaa', 'bbb')
        when t1.id = 1 then B.name in ('bbb', 'ccc')
        when t1.id = 2 then B.name in ('ccc', 'ddd')
    END
    

    加深对case when和where的理解:case when放置到where后面

    展开全文
  • mysql case when 用法

    千次阅读 2022-05-16 09:56:16
    mysql case when 有两种用法 1、简单函数 CASE [col_name] WHEN [value1] THEN [result1]…ELSE [default] END 枚举这个字段所有可能的值。 2、搜索函数 CASE WHEN [expr] THEN [result1]…ELSE

    开发中经常用到,但是老是忘记,简单记一下
    case when语句,用于计算条件列表并返回多个可能结果表达式之一。
    CASE 具有两种格式:简单 CASE 函数将某个表达式与一组简单表达式进行比较以确定结果。 CASE 搜索函数计算一组布尔表达式以确定结果。 两种格式都支持可选的 ELSE 参数。
    1、简单函数

    CASE input_expression
    WHEN when_expression THEN
        result_expression [...n ] [
    ELSE
        else_result_expression
    END
    

    枚举Input_expression所有可能的值。
    Input_expression 和每个 when_expression 的数据类型必须相同,或者是隐性转换。

    2、搜索函数
    CASE WHEN [Boolean_expression] THEN [result1]…ELSE [default] END
    判断Boolean_expression表达式,如果满足,返回then后边的结果
    以人员表为例
    people表结构
    第一种用法,when后边必须接case列的值,不能是表达式

    select case sex when sex='1' then '男' when sex='2' then '女' else '其他' end as '性别' from people;
    select case sex when sex='2' then '女' when sex='1' then '男' else '其他' end as '性别' from people;
    

    查询结果
    在这里插入图片描述
    在这里插入图片描述
    原因:因为when后边不是case列的所有可能值,而是表达式,但是为什么会出现’男’这样的结果,需要思考,后边研究明白后,再更新
    正确写法

    select case sex when '1' then '男' when '2' then '女' else '其他' end as '性别' from people;
    

    查询结果
    在这里插入图片描述

    第二种用法

    select case when sex='1' then '男' when sex='2' then '女' else '其他' end as '性别' from people;
    

    查询结果
    在这里插入图片描述

    展开全文
  • Oracle中Case When用法

    千次阅读 2021-11-08 20:18:28
    一、Case的两种表达式 1.1、简单的case表达式 SELECT CASE 列名 WHEN 值1 THEN 結果1 WHEN 值2 THEN 結果2 ELSE 结果3 ... WHEN 条件1 THEN 条件1的結果 ...二、Case的不同用法 2.1、作为求个
  • 主要介绍了laravel 框架结合关联查询 when()用法,结合实例形式分析了laravel5.6框架when()基本原理、使用方法及操作注意事项,需要的朋友可以参考下
  • CASE WHEN 的简单用法

    万次阅读 2021-03-17 13:34:44
    CASE有两种格式简单CASE函数:casesexwhen1then'男'when0then'女'else其他endCASE搜索函数:casewhensex=1then'男'whensex=0then'女'else其他end在工作中数据表中会有不少字段是以代码形式表示某些属性值,常见的如...
  • case when的几种用法

    万次阅读 2021-06-05 19:01:52
    用法一: select case c_sex when 1 then '男' else '女' end as '性别', count(*) as '人数' from user_inofr group by '性别' 用法二: select case when c_sex=1 then '男' else '女' end as '性别'...
  • mysql中when用法

    2021-07-07 16:24:17
    # when 表达式中可以使用 and 连接条件 SELECT NAME '英雄', age '年龄', CASE WHEN age < 18 THEN '少年' WHEN age < 30 THEN '青年' WHEN age >= 30 AND age < 50 THEN '中年' ELSE ...
  • SQL之case when then用法简介

    千次阅读 2021-12-16 16:19:08
    case表达式开始执行时,when子句会从上到下地执行,只要有一个when子句值为真,就会返回相应的表达式,同时忽略其他when子句。如果没有一个when子句条件的值为真,那么将会返回esle子句里的表达式
  • Mybatis CASE WHEN用法

    千次阅读 2022-04-27 11:34:08
    Mybatis CASE WHEN用法 Case具有两种格式。简单Case函数和Case搜索函数。 简单Case函数 CASE sex WHEN ‘1’ THEN ‘男’ WHEN ‘2’ THEN ‘女’ ELSE ‘其他’ END –Case搜索函数 CASE WHEN sex = ‘1’ THEN ...
  • 满意答案youximingwo2014.06.24采纳率:50%等级:12已帮助:12841人我也没听过有when?case是和switch()一起的如swich(variable){case value1:表达式;break;case value2:表达式;break;case value3:表达式;break...
  • Oracle中case when用法

    千次阅读 2021-01-26 16:11:31
    特记录对于case when用法,欢迎各位朋友指正,不喜勿喷。 首先case when有两种表达方式,见下图的详细解释。但是在使用中需要我们灵活嵌套公式哦。 比如:表abc中记录了id,name,type。我们要根据type的类型...
  • 主要介绍了Jquery $when done then的用法详解的相关资料,本文还通过一个例子给大家介绍jquery when then(done) 用法,需要的朋友可以参考下
  • Case when用法

    万次阅读 多人点赞 2018-07-10 14:07:55
    Case when用法: 一旦满足了某一个WHEN, 则这一条数据就会退出CASE WHEN , 而不再考虑 其他CASE; Case when用法 -- 搜索Case函数: Case函数(Case搜索函数): 判断表达式的真假,如果为真,返回结果;如果为假,...
  • sql语句之case when用法

    千次阅读 2021-01-27 17:24:40
    当需要从数据源上直接判断数据显示带不动含义的时候,就可以在SQL语句中使用case when 函数。 语法如下: Case具有两种格式。简单Case函数和Case搜索函数。 简单Case函数格式: CASE 列名 WHEN 条件值1 THEN 选项1 ...
  • MySQL中case when的基本用法总结原创Backcanhave7 最后发布于2018-12-06 15:14:15 阅读数 439 收藏展开MySQL中的case when有用两种用法,官方文档中的说明如下:用法一:CASE case_valueWHEN when_value THEN ...
  • sql语句中case when then 用法

    千次阅读 2021-12-22 15:39:13
    sql语句中case when then 用法
  • Hive case when 用法

    千次阅读 2019-11-25 16:02:53
    when coalesce(keya,'')<>'' then keya --then后面切勿带逗号,不然报错 when coalesce(par,'')<> '' and par like '%keya=%' and coalesce(str_to_map(par, ',', '=')['keya'],'')<>'' t...
  • sql case when用法详解

    2021-03-23 10:22:18
    当我们需要从数据源上 直接判断数据显示代表的含义的时候 ,就可以在SQL语句中使用 Case When这个函数了. Case具有两种格式。简单Case函数和Case搜索函数。 第一种 格式 : 简单Case函数 : 格式说明  case 列名  ...
  • 数据库中case when用法

    千次阅读 2019-05-15 15:15:36
    CASE WHEN 及 SELECT CASE WHEN用法 Case具有两种格式。简单Case函数和Case搜索函数。 1.简单Case函数 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END 2.Case搜索函数 CASE WHEN sex = '1' ...
  • SQL之CASE WHEN用法详解

    万次阅读 多人点赞 2021-07-16 16:57:12
    when '1' then '男' when '2' then '女' else '其他' end 二:Case搜索函数 case when sex = '1' then '男' when sex = '2' then '女' else '其他' end 这两种方式,可以实现相同的功能。简单Case函数的...
  • case when 语句用法

    千次阅读 2018-07-19 20:24:57
    文章链接https://www.cnblogs.com/Richardzhu/p/3571670.html

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 139,385
精华内容 55,754
关键字:

when的所有用法

友情链接: Alarma_Receptor.rar