MySql Case查询

MySql Case查询,第1张

例子:根据用户id与身份查询用户名称:教师与学生分为两个表存储

select a.*,case a.a_user_identity when 0 then (select t.teacherNameChs from teacherinfo t where teacherId =a.a_user_id) else (select s.studentNameChs from studentinfo s where s.studentId =a.a_user_id)

end as username

from advice a

简单 CASE 函数:

CASE input_expression

    WHEN when_expression THEN result_expression

        [ ...n ]

    [ 

        ELSE else_result_expression

    END

CASE 搜索函数:

CASE    

WHEN Boolean_expression THEN result_expression

        [ ...n ]

    [ 

        ELSE else_result_expression

    END

比如:

第一种用法:

SELECT name,

       CASE WHEN birthday < '1981' THEN 'old' 

            WHEN birthday > '1988' THEN 'yong'

            ELSE 'ok' END YORN

FROM lee

第二种用法:

SELECT NAME, CASE name

    WHEN 'sam' THEN 'yong'

    WHEN 'lee' THEN 'handsome'

    ELSE 'good'  END as oldname

FROM lee

CASE WHEN是列出几个并行的条件,几个情况都是并列的,优先级从前往后。

所以如果你的情况条件从小到大,那么遇到前边的,虽然可能符合多个条件,但是优先级是前边的优于后边的。所以遇到第一个符合的,就会取出这个条件需要的数据,而不会再往后判断。

case case_value

when when_value then statement_list

[when when_value then statement_list]…

[else statement_list]

end case

case_value:参数表示条件判断的变量;

when_value:参数表示变量的取值;

statement_list:参数表示不同when_value值的执行语句。

case语句的另一种形式。语法2:

case

when search_condition then statement_list

[when search_condition then statement_list]…

[else statement_list]

end case。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/8366316.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-15
下一篇2023-04-15

发表评论

登录后才能评论

评论列表(0条)

    保存