mysql case when 多个条件_mysql中流程控制语句的使用

0762e7b52821eae11d7717db3c94bb39.png

1. 流程控制的使用

存储过程和函数中可以使用流程控制语句来控制语句的执行。mysql中可以使用if语句、case语句、loop语句、leave语句、iterate语句、repeat语句和while语句来进行流程控制。

(1) if语句

if语句用来进行条件判断。语法:

if search_condition then statement_list

[elseif search_condition then statement_list]…

[else statement_list]

end if;

search_condition:参数表示条件判断语句;

statement_list:参数表示不同条件的执行语句。

示例:该示例根据age与20的大小关系来执行不同的set语句。如果age>20,那么将count1的值加1;如果age值等于20,那么将count2的值加1;其它情况将count3的值加1。if语句都用end if来结束。

if age>20 then set @count=@count1+1;

elseif age=20 then @couunt2=@count2+1;

else @count3=@count3+1;

end if;

(2) case语句

case语句也用来进行条件判断。语法1:

case case_value

when when_value then statement_list

[when when_value then statement_list]…

[else statement_list]

end case

case_value:参数表示条件判断的变量;

when_value:参数表示变量的取值;

statement_list:参数表示不同when_value值的执行语句。

case语句的另一种形式。语法2:

case

when search_condition then statement_list

[when search_condition then statement_list]…

[else statement_list]

end case;

示例:如果age的值为20,count1的值加1;否则count2的值加1;case语句都要使用end case结束;

case age

when 20 then set @count1=@count1+1;

else set @count2=@count2+1;

end case;

另一种形式:

case

when age=20 then set @count1=@count1+1;

else set @count2=@count2+1;

end case;

(3) loop语句

loop语句可以是某些特定的语句重复执行,实现一个简单的循环。但是loop语句本身没有停止循环的语句,必须是遇到leave语句才能停止循环。语法:

[begin_label:]loop

statement_list

end loop [end_label]

begin_label和end_label:参数分别表示循环开始和结束的标志,这两个标志必须相同,且都可以省略;

statement_list:参数表示需要执行的循环语句;

示例:

add_num:loop

set @count=@count+1;

end loop add_num;

该示例执行count+1的操作。因为没有跳出循环语句,这个循环是一个死循环。

(4) leave语句

leave语句主要用于跳出循环控制。语法:

leave label

label参数表示循环的标志。

示例:leave语句

add_num:loop

set @count=@count+1;

if @count=100 then

leave add_num;

end loop add_num;

该示例循环执行count+1的操作。当count的值等于100时,则leave语句跳出循环。

(5) iterate语句

iterate语句也是跳出循环的语句。但是,iterate语句是跳出本次循环,然后直接进入下一次循环。语法:

iterate leave

leave:参数表示循环的标志

示例:iterate语句

add_num:loop

set @count=@count+1;

if @count=100 then

leave add_num;

else if mod(@count,3)=0 then

iterate add_num;

select * from employee;

end loop add_num;

该示例循环执行count+1的操作,count值为100时结束循环。如果count的值能够整除3,则跳出本次循环,不再执行select语句;

注意:leave语句和iterate语句都是用来跳出循环,两者功能不同。leave语句跳出整个循环,然后执行循环后面的语句。而iterate语句是跳出本次循环,然后进入下一次循环。

(6) repeat语句

repeat语句是有条件控制的循环语句。当满足特定条件时,就会跳出循环语句。

语法:

[begin_label:]repeat

statement_list

until search_condition

end repeat [end_label]

statement_list:参数表示循环的执行语句;

search_coondition:参数表示结束循环的条件,满足该条件时循环结束。

示例:下面是iterate语句的一个示例:

repeat

set @count=@count+1;

until @count=100;

end repeat;

该示例循环执行count+1的操作,count值为100时结束循环。repeat循环都用end repeat结束。

(7) while语句

while语句也是有条件控制的循环语句。但while语句和repeat语句是不一样的。while语句是当满足条件时,执行循环内的语句。语法:

[begin_label:]while search_condition do

statement_list

end while[end_label]

search_condition:参数表示循环执行的条件,满足该条件时循环执行;

statement_list:蚕食表示循环的执行语句。

示例:下面是iterate语句

while @count<100 do

set @count=@count+1;

end while;

该示例执行的是count+1的操作,count值小于100时执行循环。如果count值等于100了,则跳出循环。while循环需要end while来结束。

一.调用存储过程和函数

存储过程和存储函数都是存储在服务器端的SQL语句的集合。要使用这些已经定义好的存储过程和存储函数就需要调用的方式来实现。存储过程是通过call语句来调用的。而存储韩式的使用方法和mysql内部函数的使用方法是一样的。执行存储过程和存储函数需要execute权限。execute权限的信息存储在information_schema数据库下面的user_privileges表中。

(1) 调用存储过程

mysql中用call来调用存储过程。调用存储过程后,数据库系统将执行存储过程中的语句。然后,将结果返回给输出值。call语法:

call sp_name([parameter[,…]]);

sp_name是存储过程的名称;paramter是指存储过程的参数;

示例:下面定义一个存储过程,然后调用存储过程。

//创建存储过程

f1c35ce76ae88b04ee7d14d32ff89cd7.png

查看一下存储过程

1329bee77c11dd598b96ca6876281695.png

//调用存储过程及结果

1942e37e88d6bb24fb479fbceca7d738.png

使用call语句来调用存储过程;使用select语句来查询存储过程的输出值。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值