mysql语句涉及到多判断

在mysql数据库中,往往有多判断的出现。例如在客户的银行卡表中t_bank_info(id,bank_no,bank_state.....,user_id),我们需要查询用户的银行卡状态

SELECT

  b.`bank_no`,
  b.`bank_state` ,
  CASE  WHEN b.`bank_state`=0 THEN '已绑定'
  WHEN b.`bank_state`=1 THEN '变更中'
   WHEN b.`bank_state`=2 THEN '变更失败'
   END '卡状态'
FROM
  t_bank_info b
WHERE b.'user_id'=100001'

 

 

 

所以此次用到的是 case  when then end  判断语句

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
如果你想在结果集中将基于多列 `CASE WHEN` 的排名位次分别显示在不同的列中,可以使用 MySQL 的用户变量来实现。以下是一个示例: ``` SET @rank1 = 0; SET @rank2 = 0; SET @rank3 = 0; SELECT column1, column2, @rank1 := IF(my_result1 = @prev_result1, @rank1, @rank1 + 1) AS rank1, @prev_result1 := my_result1 AS prev_result1, @rank2 := IF(my_result2 = @prev_result2, @rank2, @rank2 + 1) AS rank2, @prev_result2 := my_result2 AS prev_result2, @rank3 := IF(my_result3 = @prev_result3, @rank3, @rank3 + 1) AS rank3, @prev_result3 := my_result3 AS prev_result3 FROM ( SELECT column1, column2, CASE WHEN condition1 THEN result1 ELSE result2 END AS my_result1, CASE WHEN condition2 THEN result3 ELSE result4 END AS my_result2, CASE WHEN condition3 THEN result5 ELSE result6 END AS my_result3 FROM my_table ORDER BY my_result1 DESC, my_result2 ASC, my_result3 DESC ) subquery, (SELECT @rank1 := 0, @prev_result1 := NULL, @rank2 := 0, @prev_result2 := NULL, @rank3 := 0, @prev_result3 := NULL) init ``` 在这个例子中,我们首先使用 `SET` 语句初始化三个用户变量 `@rank1`、`@rank2` 和 `@rank3`,并将它们都设置为 0。然后,我们在查询中使用这些变量来计算排名位次。 具体地说,我们使用了 `IF` 函数和逻辑运算符来比较当前行的 `my_result` 值和前一行的 `my_result` 值,以确定当前行的排名位次。我们还使用了 MySQL 的变量赋值语句 `:=` 来将当前行的 `my_result` 值保存到 `@prev_result` 变量中,以便在下一行中进行比较。 最后,我们使用了一个子查询和一个 `JOIN` 子句来将用户变量初始化为 0。这是必需的,因为用户变量在会话结束前会一直存在,如果不初始化它们,可能会影响后续查询的结果。 请注意,这种方法可能会影响查询性能,因为它涉及到变量赋值和条件判断等操作。如果你需要处理大量数据或需要更高的查询性能,请考虑使用其他高级技术,如窗口函数等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿呆编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值