CREATE DEFINER=`root`@`localhost` PROCEDURE `SampleProc`( name_in INT)
BEGIN
DECLARE exit_loop BOOLEAN;
DECLARE l_name INT;
DECLARE X INT;
DECLARE Y INT;
DECLARE c1id INT;
DECLARE done INT DEFAULT FALSE;
DECLARE cur CURSOR FOR SELECT PaperID FROM scrpd_paper_authors WHERE AuthorID=name_in;
DECLARE cur1 CURSOR FOR SELECT AuthorID FROM scrpd_paper_authors WHERE PaperID=l_name;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET exit_loop = TRUE;
OPEN cur;
example_loop: LOOP
FETCH cur INTO l_name;
IF exit_loop THEN
CLOSE cur;
LEAVE example_loop;
END IF;
OPEN cur1;
example_loop1:LOOP
FETCH cur1 INTO c1id;
UPDATE recipes_new SET co_auths = IF(LENGTH(co_auths), CONCAT(co_auths, ',', c1id), c1id) WHERE id = name_in;
IF exit_loop THEN
CLOSE cur1;
LEAVE example_loop1;
END IF;
END LOOP example_loop1;
END LOOP example_loop;
END$$
sqlyogでストアドプロシージャを作成しました。私が直面している問題は、更新が行われた後にテーブルに結果を表示すると、最後のエントリが1,2,3であるのに対し、1,2,3,3であるということです。繰り返されています。問題は何だと思いますか?
recipes_new(My current result) scrpd_paper_authors
id co_auths PaperID AuthorID
==== ======== ======= ========
1 1,1 1 1
2 2,2 2 2
3 3,4,4 3 3
4 3,4,5,6,7,7 3 4
4 5
4 6
4 7
あなたがrecipes_new(私の現在の結果)で見ることができるように、私は最後に余分な数を得ています。私の期待する結果は
1
2
3,4
3,4,5,6,7