问题
遇到一个需求,查询返回订单列表,并对订单属性进行赋值。前端传入type字段,后端数据表并没有type字段需要根据自己的需求进行动态判断。当全表查询有多种状态时,状态如何动态赋值犯难了。最简单的方法就是把相关的判断字段全部返回到service层使用Java代码进行判断。可是这样不太优雅,因为分页查询前端不需要的字段也要返回了。
解决方案
1.如何添加数据表不存在的字段
select 1 type, --这样就可返回一个字段 type 为 1
name from student
2.type字段有多个属性如何进行动态的赋值
- case :表示需要处理的字段
- when :表示条件
- then :表示当when执行为true时,再执行的语句
- else :表示当所有的when执行为false时,再执行的语句
- end:表示 case 语句结束的结尾
SELECT
(CASE
when status = 1 and score = a then 1
when status = 2 and score != a then 2
end) AS type
FROM student ;