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 列名
when 条件值1 then 选择项1
when 条件值2 then 选项2.......
else 默认值 end
第二种:Case搜索函数
case
when 列名= 条件值1 then 选择项1
when 列名=条件值2 then 选项2.......
else 默认值 end
比较: 两种格式,可以实现相同的功能。简单Case函数的写法相对比较简洁,但是和Case搜索函数相比,功能方面会有些限制,比如写判断式。
还有一个问题,Case函数只返回第一个符合条件的值,剩下的Case部分将会被自动忽略。如下面这个例子:
CASE col
WHEN col_1 IN ( 'a', 'b') THEN '第一类'
WHEN col_1 IN ('a') THEN '第二类'
ELSE'其他' END
这个语句中,满足条件a永远不会返回第二类,因为按顺序发现a在第一类的时候查询就已经结束了。所以case无法用于一个东西在一个分类里有不同的属性的条件。
case when 好处很明显就是非常易于看懂,相比实现同样条件用复杂的自连接查询,在逻辑上很容易看懂(自连接查询在不同的情况下可能会有BUG)。
MySql case when 语句,用于计算条件列表并返回多个可能结果表达式之一。
通常在 sql查询 中使用,也可在 sql更新 中使用。
else不是必须的,比如下面的例子
表 t_student
实现 : 大于95分,评价 甲 ;大于90分小于95分,评价 乙 ;否则为 丙
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)