slipperySoap 2022-05-31 08:24 采纳率: 88.9%
浏览 37
已结题

MySQL选择语句如何支持单条件多语句块语法?

问题遇到的现象和发生背景

最近工作遇到一个问题,在MySQL中,写纯SQL的时候用到了用户变量@var,也涉及了多条件选择,我这里用了case函数语法
语法1.

case 变量 或 表达式 或 字段
when 常量1 then1
when 常量2 then2
...
【else 值n】
end

语法2.

/*
case 
when 条件1 then1 (如果是语句,则需要加分号; 后期会用到case语句)
when 条件2 then2
...
【else 值n】
end 
*/

发现:每个条件when之后直接跟结果值
没有像Java中if-else if-else选择条件语法大括号中的语句块

if (xxxboolean) {
  xxxstatement1;
  xxxstatement2;
  xxxstatement3;
  ....
  xxxstatementn;
}

这使得我要将赋值语句,去内嵌写条件中结果值中,这使得可读性非常差
并且这样下来,最多也只有两个内嵌的赋值语句,如果超过两个,还处理不了

我想要达到的结果

防范于未然,和提升MySQL代码的可操作性,MySQL中有没有支持选择流程控制的语句块语法呢?(就像Java选择流程语法中if和else if和else后的跟的大括号一样)

展开全部

  • 写回答

1条回答 默认 最新

  • 於黾 2022-05-31 08:37
    关注

    sql里可以使用if,else
    case when then其实类似java里的三元运算符,只能写表达式,不可以写复杂语法
    想写复杂语法还得用if,else

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
    slipperySoap 2022-05-31 09:26

    感谢回答,请问可以举个if-elseif-else的使用吗?查了很多,语法不是很会,希望是直接嵌在select语句里的,不清楚应该写在哪个位置,标量?表级?列级?行级?

    回复
    於黾 回复 slipperySoap 2022-05-31 09:36

    if不是用来嵌套在select里面的,case when then才是
    你可以定义一些变量(可以是临时表)来实现不同的if有不同的结果

    回复
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 6月7日
  • 已采纳回答 5月31日
  • 修改了问题 5月31日
  • 修改了问题 5月31日
  • 展开全部
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部