MySQL CASE函数

CASE WHEN THEN ELSE END

简单 CASE 函数将某个表达式与一组简单表达式进行比较以确定结果。CASE 搜索函数计算一组布尔表达式以确定结果。

简单CASE函数
CASE input_expression
WHEN when_expression THEN
    result_expression [...n ] [
ELSE
    else_result_expression
END
CASE搜索函数
CASE
WHEN Boolean_expression THEN
    result_expression [...n ] [
ELSE
    else_result_expression
END

简单CASE函数和CASE搜索函数的区别在于 简单CASE函数用input_expression与when_expression进行对比如果表达式结果为true则返回对应的result_expression,而CASE搜索函数WHEN的后面就是一个Boolean表达式,只要是任何一个返回值为boolean类型的都可以。所以CASE搜索函数可以进行更复杂的运算。

例子

简单CASE函数的例子:

SELECT
    CASE user.status
    WHEN 2 THEN
         CASE user.type
         WHEN 1 THEN
              user_personal.name
         WHEN 2 THEN
              user_org.name
         END
    ELSE NULL
    END as `name`,
    user_org.province,
    user_org.order
FROM user
    LEFT JOIN user_personal ON user_personal.user_id = user.id
    LEFT JOIN user_org ON user_org.user_id = user.id

CASE搜索函数的例子:

SELECT
    CASE
    WHEN  user.status=2 THEN
         user.name
    WHEN  user.status=1 THEN
         'admin' 
    WHEN  user.status=3 THEN
         'common'
    WHEN  user.status>3 and user.status<5 THEN
         'nothing' 
    ELSE NULL
    END as `name`,
    user.age,
    user.type
FROM user

CASE搜索函数还可以在 WHERE 子句中,或者在 GROUP BY 子句中使用 CASE
如:通过在SELECT选项中添加CASE进行分类,在通过GROUP BY进行统计

SELECT
    CASE
    WHEN status< 3 THEN
        'type1'
    WHEN status>= 3
            AND parent_id < 5 THEN
        'type2'
    ELSE
        'nothing'
    END AS status_type,
    count(*) AS 'count' 
FROM
    user
GROUP BY
    status_type
ORDER BY
    count
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值