gpt4 book ai didi

mysql - 在 MySQL Workbench 中运行 SQL 时,WHILE 在此位置无效输入

转载 作者:行者123 更新时间:2023-11-29 15:37:44 25 4
gpt4 key购买 nike

我创建了一个表,如下所示:

create table data_table(skey int, svalue int);

我想找到skey中的空白。假设我有条目 1、2、6、7。然后运行 ​​SQL 应该返回 4 和 5。我提到 this并尝试执行以下操作:

select @min_val := min(svalue), @max_val := max(svalue) from data_table;

create table tmp (Field_No int);

WHILE @min <= @max DO
if not exists (select * from data_table where skey = @min)
insert into tmp (Field_No) values (@min)
set @min = @min + 1
END WHILE;

select * from tmp
drop table tmp

MySQL工作台说WHILE在此位置无效输入:

enter image description here

PS:我使用 MySQL 5.6.25

更新

在存储过程中添加整个代码仍然会出现错误:

enter image description here

最佳答案

每个 if 必须有一个 then 和 end if;如果过程中有 1 个以上的语句,则必须设置分隔符。 https://dev.mysql.com/doc/refman/8.0/en/stored-programs-defining.html

这个语法

drop procedure if exists p;
delimiter $$
create procedure p()
begin
select @min_val := min(svalue), @max_val := max(svalue) from data_table;

create table tmp (Field_No int);

WHILE @min <= @max DO
if not exists (select * from data_table where skey = @min) then
insert into tmp (Field_No) values (@min);
set @min = @min + 1;
end if;
END WHILE;

select * from tmp;
drop table tmp;
end $$
delimiter ;

但是你的逻辑不对,你似乎混淆了@min_val和@min

关于mysql - 在 MySQL Workbench 中运行 SQL 时,WHILE 在此位置无效输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58060509/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com