mysql case when
2015-12-24 11:39
591 查看
MySQL中case when的用法:
select f1,case [f2]
when expression1 then value1
when expression2 then value2
else value3
end alias_field
from table;
相当于代码中的:
case [f2] 表示f2这个字段是可选的,expression是一个条件表达式或常量,value是一个值,在expression和value中都可以使用字段的值进行判断或运算;
比如一个活动数据表,每个活动都有开始时间和结束时间,在展示时要求将正在进行中的活动排在前面,未开始的排在中间,已结束的排在最后
活动表:activity
id 主键
activity_name 活动名称
start_time 活动开始时间
end_time 活动结束时间
按如上排序规则查询活动数据:
select f1,case [f2]
when expression1 then value1
when expression2 then value2
else value3
end alias_field
from table;
相当于代码中的:
if(expression1 ){ alias_field = value1; }elseif(expression2 ){ alias_field = value2; }else{ alias_field = value3; }
case [f2] 表示f2这个字段是可选的,expression是一个条件表达式或常量,value是一个值,在expression和value中都可以使用字段的值进行判断或运算;
比如一个活动数据表,每个活动都有开始时间和结束时间,在展示时要求将正在进行中的活动排在前面,未开始的排在中间,已结束的排在最后
活动表:activity
id 主键
activity_name 活动名称
start_time 活动开始时间
end_time 活动结束时间
按如上排序规则查询活动数据:
select id,activity_name, case when end_time < unix_timestamp(now()) then -1 /*已结束*/ when start_time < unix_timestamp(now()) and end_time > unix_timestamp(now()) then 1 /*进行中*/ else 0 /*未开始*/ end order_number from activity order by order_number desc limit 1,10;
相关文章推荐
- 写MySQL存储过程实现动态执行SQL
- MySql日期函数(二)
- mysql升级5.7失败,报错[Err] 1146 - Table 'performance_schema.session_status' doesn't exist
- mysql 获取当前日期及格式化(一)
- mysql处理字符串的两个绝招:substring_index,concat最近老是碰到要处理数据
- mysql存储过程按月创建表分区 方式二
- MySql 数据库将中文填入时字段时显示?号
- MySql错误代码1045的解决方案
- mysql相关命令的作用总结
- MySQL的备份与过滤
- mysql 中的information_schema是什么
- win10下安装MySQL启动失败
- Mysql 设置某字段唯一
- mysql group by
- MySQL连接问题浅析
- MySQL连接问题浅析
- MySQL连接问题浅析
- MySQL连接问题浅析
- mysql备份和恢复
- mysql 点赞取消点赞语句