【发布时间】:2014-01-02 10:34:53
【问题描述】:
在此问题How can I loop through all rows of a table? (MySQL) 的已接受答案中,发布了以下代码:
INSERT INTO table_B(ID, VAL) VALUES(ID, VAL) FROM table_A LIMIT i,1;
我想先从 table_A 中选择变量,这样我可以像这样重用它:
SELECT VAL FROM table_A INTO variableVal LIMIT i, 1;
INSERT INTO table_B(ID, VAL) VALUES(ID, variableVal);
但这给了我一个语法错误:
#1064 - 您的 SQL 语法有错误;检查手册 对应于您的 MySQL 服务器版本,以便使用正确的语法 靠近'LIMIT i, 1;
这是完整的代码
DROP PROCEDURE IF EXISTS ROWPERROW;
DELIMITER ;;
CREATE PROCEDURE ROWPERROW()
BEGIN
DECLARE i INT DEFAULT 0;
DECLARE factionCount INT DEFAULT 0;
DECLARE factionName varchar(100);
SELECT COUNT(*) FROM faction INTO factionCount;
SET i = 0;
WHILE i < factionCount DO
SELECT name FROM faction INTO factionName LIMIT i, 1;
//SELECT name FROM faction LIMIT i, 1 INTO factionName; (doesn't work either)
INSERT INTO groups_group(name) values (factionName);
//going to do something else with factionName
SET i = i + 1;
END WHILE;
End;
;;
call ROWPERROW();
【问题讨论】:
-
你想用
factionName做什么?很可能你可以在没有循环和游标的情况下做到这一点。
标签: mysql sql stored-procedures cursor