我正在学习SQL /存储过程。我有表与idGroup和idDraft 。现在一个idgroup可以拥有多个idDrafts 。以下是情景。
idGroup idDraft
1 1
1 2
1 3
2 1
2 2
现在我想写一个存储过程,我可以传递idGroup,它将返回下一个Max idDraft。
预期输出
所以如果我将idGroup作为1传递,我应该将值变为4,如果我将idGroup传递给2,我应该得到值为3.下面是我的尝试。请指导我。
存储过程:
CREATE DEFINER=`DEV`@`%` PROCEDURE `GetNextDraftID`(
IN p_idGroup int(11),
OUT p_NextID int(11)
)
BEGIN
DECLARE tempMax int(11);
SELECT
ss.idDraft Into tempMax
FROM
tblDraft ss
WHERE
idGroup = p_idGroup
GROUP BY idDraft
ORDER BY idDraft DESC
LIMIT 1;
IF ISNULL(tempMax) THEN
SET p_NextID = 1;
else
SET p_NextID = tempMax +1;
end IF;
END
我是初学者,所以我甚至不知道如何测试这个存储过程。请指导我。我是否需要在此处进行更多更改。