
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_expressionWHEN when_expression THEN result_expression
[ ...n ]
[
ELSE else_result_expression
END
CASE 搜索函数:
CASEWHEN 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 nameWHEN '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。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)