千家信息网

mysql case 表达式

发表于:2024-12-01 作者:千家信息网编辑
千家信息网最后更新 2024年12月01日,一、 背景resc表保存了系统的一级、二级功能模块,同时保存了二级功能模块各页面的功能,通过pid定义了父子关系。想通过resc表,整理出一份,一级、二级功能模块的对应关系,类似于这样的结果。二、 实
千家信息网最后更新 2024年12月01日mysql case 表达式

一、 背景

resc表保存了系统的一级、二级功能模块,同时保存了二级功能模块各页面的功能,通过pid定义了父子关系。

想通过resc表,整理出一份,一级、二级功能模块的对应关系,类似于这样的结果。


二、 实现方法

select case when PID=1 then '用户管理'when PID=4 then '代理管理'when PID=8 then '媒体管理'when PID=21 then '报表管理'when PID=26 then '内容管理'when PID=30 then '业绩管理'when PID=34 then '财务管理'END as menu,`name`,PID from rescwhere pid in (select id from resc where pid=0)order by pid

执行结果:

将执行结果,粘贴到excel中,进行合并单元格,即可得到预期结果,可在excel中,对功能模块进行跟踪。


三、 理论

case表达式在sql中,可以实现if-then-else的逻辑。

有两种类型的case表达式:

  • 简单case表达式,使用表达式确定返回值;

  • 搜索case表达式,使用条件确定返回值。


  1. 使用简单case表达式

  • 语法:

case search_expression

when expression1 then result1

when expression2 then result2

...

when expressionN then resultN

else default_result

end


  • 关键字说明:

    • search_expression, 待求值的表达式,数据表的某个字段;

    • expressionX, 是与search_expression进行比较的表达式;

    • result1 ,是符合表达式时,返回的值

    • default_result ,是无法匹配表达式时,默认返回值。



2. 搜索case表达式

  • 语法:

case

when condition1 then result1

when condition2 then result2

...

when conditionN then resultN

else default_result

end

  • 关键字说明:

    • condition, 是待求值的表达式;

    • result, 是返回值,condition1为真,则返回result1,以此类推。

    • default_result ,是无法匹配表达式时,默认返回值。



0