Stored procedures 用于检索表缺少的自动增量ID的MySQL过程?
我创建了一个过程来从表中查找缺少的id,但它不会检索任何结果,下面是该过程Stored procedures 用于检索表缺少的自动增量ID的MySQL过程?,stored-procedures,mysql-5.5,Stored Procedures,Mysql 5.5,我创建了一个过程来从表中查找缺少的id,但它不会检索任何结果,下面是该过程 DELIMITER || DROP PROCEDURE IF EXISTS proc_rpt || CREATE PROCEDURE proc_rpt() BEGIN SET @minID = (SELECT MIN(`id`) FROM `tbl_film` WHERE `user_id`=13); SET @maxID = (SELECT MAX(`id`) FROM `tbl_film` WHERE `user_
DELIMITER ||
DROP PROCEDURE IF EXISTS proc_rpt ||
CREATE PROCEDURE proc_rpt()
BEGIN
SET @minID = (SELECT MIN(`id`) FROM `tbl_film` WHERE `user_id`=13);
SET @maxID = (SELECT MAX(`id`) FROM `tbl_film` WHERE `user_id`=13);
REPEAT
SET @tableID = (SELECT `id` FROM `tbl_film` WHERE `id` = @minID);
IF (@tableID IS NULL) THEN
INSERT INTO temp_missing(`missing_id`) VALUES (@tableID);
END IF;
SET @minID = @minID + 1;
UNTIL (@minID <= @maxID)
END REPEAT; // earlier I was missing this line which was giving error in Procedure.
END; ||
但是没有关于tbl_缺失的结果,而我可以看到在
tbl_film
中有许多film_id
的缺失值。有人能告诉我我做错了什么吗?试试这段代码
DELIMITER ||
DROP PROCEDURE IF EXISTS proc_rpt ||
CREATE PROCEDURE proc_rpt()
BEGIN
DECLARE maxId int;
DECLARE minId int;
DECLARE curId int;
SELECT MIN(`id`) INTO maxId FROM `tbl_film` WHERE `user_id`=13;
SELECT MAX(`id`) INTO minId FROM `tbl_film` WHERE `user_id`=13;
REPEAT
SELECT `id` INTO curId FROM `tbl_film` WHERE `id` = @minID);
IF (curId IS NULL) THEN
INSERT INTO temp_missing(`missing_id`) VALUES (curId);
END IF;
SET minId = minId + 1;
UNTIL (minId <= maxId)
END REPEAT; // earlier I was missing this line which was giving error in Procedure.
END; ||
分隔符||
如果存在过程,则删除过程||
创建过程proc_rpt()
开始
声明maxId int;
声明minId int;
声明curId int;
从'tbl_film'中选择MIN('id')进入maxId,其中'user_id`=13;
从'tbl_film'中选择MAX('id')进入minId,其中'user_id`=13;
重复
从'tbl_film'中选择'id'进入curId,其中'id'=@minID);
如果(curId为NULL),则
插入temp_missing(`missing_id`)值(curId);
如果结束;
设置minId=minId+1;
直到(分钟)
DELIMITER ||
DROP PROCEDURE IF EXISTS proc_rpt ||
CREATE PROCEDURE proc_rpt()
BEGIN
DECLARE maxId int;
DECLARE minId int;
DECLARE curId int;
SELECT MIN(`id`) INTO maxId FROM `tbl_film` WHERE `user_id`=13;
SELECT MAX(`id`) INTO minId FROM `tbl_film` WHERE `user_id`=13;
REPEAT
SELECT `id` INTO curId FROM `tbl_film` WHERE `id` = @minID);
IF (curId IS NULL) THEN
INSERT INTO temp_missing(`missing_id`) VALUES (curId);
END IF;
SET minId = minId + 1;
UNTIL (minId <= maxId)
END REPEAT; // earlier I was missing this line which was giving error in Procedure.
END; ||