mysql set 算法_MySQL高级算法题 存储过程

#创建存储过程 求1-100的值

#while

delimiter $$

create procedure pro_sum(out count int)

begin

declare i int default 1;

declare sum int default 0;

while i <= 100 do

set sum = sum + i;

set i = i + 1;

end while;

set count = sum;

end $$

delimiter ;

call pro_sum(@count);

select @count;

#repeat

delimiter $$

create procedure pro_sum2(out count int)

begin

declare i int default 1;

declare sum int default 0;

repeat

set sum = sum + i;

set i = i + 1;

until i>100

end repeat;

set count = sum;

end $$

delimiter ;

#LOOP+if+leave+循环体

delimiter $$

create procedure pro_sum3(out count int)

begin

declare i int default 1;

declare sum int default 0;

lp:loop

set sum = sum+i;

set i = i+1;

if i>100 then

leave lp;

end if;

end loop lp;

end $$

delimiter ;

#求10以内奇数值的和

#while

delimiter $$

create procedure pro_jsum(out count int)

begin

declare j int(11) default 1;

declare sum int(11) default 0;

while j <= 10 do

set sum = sum + j;

set j = j + 2;

end while;

set count = sum;

end $$

delimiter ;

call pro_jsum(@count);

select @count;

delimiter $$

create procedure pro_jsum1(out count int)

begin

declare j int default 1;

declare sum int default 0;

repeat

set sum = sum + j;

set j = j + 2;

until j>=10

end repeat;

end $$

delimiter ;

#loop+leave

delimiter $$

create procedure pro_jsum2(out count int)

begin

declare j int default 1;

declare sum int default 0;

lp1:loop

set sum = sum + j;

set j = j + 2;

if i>=10 then

leave lp1;

end if;

end loop lp1;

end $$

delimiter ;

#创建存储过程 求1-n的值

delimiter $$

create procedure pro_n(in num1 int)

begin

declare i int default 1;

declare sum int default 1;

while i < num1 do

set i = i+1;

set sum = sum + i;

end while;

select sum;

end $$

delimiter ;

call pro_n(10);

#repeat

delimiter $$

create procedure pro_n1(in num1 int)

begin

declare i int default 1;

declare sum int default 1;

repeat

set sum = sum + i;

set i = i + 1;

until i < num1

end repeat;

end $$

delimiter ;

#LOOP

delimiter $$

create procedure pro_n2(in num1 int)

begin

declare i int default 1;

declare sum int default 1;

lp:loop

set sum = sum + i;

set i = i + 1;

if i < num1 then

leave lp;

end if;

end loop lp;

end $$

delimiter ;

#存储过程实现1-100偶数和

#while

delimiter $$

create procedure pro_osum(out num2 int)

begin

declare i int default 0;

declare sum int default 0;

while i <= 100 do

set i = i + 2;

set sum = sum + i;

end while;

set num2=sum;

end $$

delimiter ;

call pro_osum(@num2);

select @num2;

#repeat

delimiter $$

create procedure pro_osum1(out num2 int)

begin

declare i int default 0;

declare sum int default 0;

repeat

set i = i + 2;

set sum = sum + i;

until i<=100

end repeat;

set num2 = sum;

end $$

delimiter ;

#loop

delimiter $$

create procedure pro_osum2(out num2 int)

begin

declare i int default 0;

declare sum int default 0;

lp:loop

set i = i + 2;

set sum = sum + i;

if i>100 then

leave lp;

end if;

end loop lp;

end $$

delimiter ;

#计算n!

#while

delimiter $$

create procedure pro_n3(in num int)

begin

declare i int default 1;

declare n int default 1;

while i<=num do

set n = n * i;

set i = i + 1;

end while;

select n;

end $$

delimiter ;

call pro_n3(5);

#repeat

delimiter $$

create procedure pro_n4(in num int)

begin

declare i int default 1;

declare n int default 1;

repeat

set n = n* i;

set i = i + 1;

until i > num

end repeat;

end $$

delimiter ;

#loop

delimiter $$

create procedure pro_n5(in num int)

begin

declare i int default 1;

declare n int default 1;

lp:loop

set n = n * i;

set i = i + 1;

if i>num then

leave lp;

end if;

end loop lp;

end $$

delimiter ;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL中没有内置的雪花算法函数。雪花算法是一种用于生成分布式系统中唯一ID的算法,通常用于替代自增ID。如果你希望在MySQL中使用雪花算法生成唯一ID,你可以自己实现一个函数或者使用第三方库。 下面是一个简单的示例,演示如何在MySQL中实现雪花算法函数: ```sql CREATE FUNCTION snowflake() RETURNS BIGINT BEGIN DECLARE timestamp_ms BIGINT; DECLARE timestamp_seq BIGINT; DECLARE worker_id BIGINT; DECLARE datacenter_id BIGINT; DECLARE snowflake_id BIGINT; SET timestamp_ms = FLOOR(UNIX_TIMESTAMP(CURRENT_TIMESTAMP(6)) * 1000); SET timestamp_seq = (SELECT IFNULL(MAX(seq), 0) + 1 FROM snowflake_table WHERE timestamp = timestamp_ms); SET worker_id = <YOUR_WORKER_ID>; -- 需要根据实际情况设置 SET datacenter_id = <YOUR_DATACENTER_ID>; -- 需要根据实际情况设置 SET snowflake_id = (timestamp_ms << 22) | (datacenter_id << 17) | (worker_id << 12) | timestamp_seq; INSERT INTO snowflake_table (timestamp, seq) VALUES (timestamp_ms, timestamp_seq); RETURN snowflake_id; END; ``` 这个示例中,我们创建了一个名为`snowflake`的函数,它会生成一个唯一的雪花ID。你需要根据实际情况设置`worker_id`和`datacenter_id`,并且还需要创建一个名为`snowflake_table`的表来保存每个时间戳对应的序列号。 请注意,这只是一个简单的示例,实际应用中可能需要根据具体需求进行调整和优化。此外,还有一些第三方库可以帮助你更方便地在MySQL中实现雪花算法,你可以根据自己的需求选择合适的解决方案。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值