CREATE DEFINER=`root`@`localhost` PROCEDURE `SampleProc`()
BEGIN
DECLARE X INT;
SET X = 1;
WHILE X <= 1890 DO
SET @paperid=(SELECT PaperID FROM scrpd_paper_authors WHERE AuthorID=X);
SELECT AuthorID FROM scrpd_paper_authors WHERE PaperID=@paperid
SET X = X + 1;
END WHILE;
END$$
DELIMITER ;
mytable scrpd_paper_authrs
ID co_authors PaperID AuthorId
==== ========= ========= ========
1 1 1
2 2 2
3 3 3
4 3 4
5 3 5
mytable(expected result)
ID co_authors
===== ==========
1 0
2 0
3 4,5
4 3,5
5 3,4
そのため、AuthorID は複数の行を保持しています。where 句を使用してこれらの行をテーブルに挿入したいのですが、次のエラーが発生します。
「サブクエリは複数の行を返します」
たとえば、select を使用して結果 1,2,3 を取得した場合、ID=1 の 1,2,3 としてそれらを mytable (co_authors) に格納する必要があります。co_authors は列名です。