我的表名称为“tmp1”,其中包含字段名称 id 和逗号。逗号包含 1,3,2,4,5 个文本数据类型的值。
我想要在我的存储过程中循环中单独的值。就像 1 然后 3 然后 2 等等。所以,我是按照给定的过程创建的。
BEGIN
DECLARE my_delimiter CHAR(1);
DECLARE split_comma text;
DECLARE done INT;
DECLARE occurance INT;
DECLARE i INT;
DECLARE id INT;
DECLARE sel_query VARCHAR(500);
DECLARE splitter_cur CURSOR FOR SELECT id,comma from tmp1;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done=1;
OPEN splitter_cur;
splitter_loop:LOOP
FETCH splitter_cur INTO id,split_comma;
SET occurance = LENGTH(split_comma) - LENGTH(REPLACE(split_comma,',',''))+1;
SET my_delimiter=',';
IF done = 1 THEN
LEAVE splitter_loop;
END IF;
IF occurance > 0 THEN
SET i = 1;
WHILE i <= occurance DO
SET sel_query = "SELECT SUBSTRING_INDEX(comma,',',i) as abc from tmp1";
SET @sel_query = sel_query;
PREPARE sel_query FROM @sel_query;
EXECUTE sel_query;
SET i = i + 1;
END WHILE;
END IF;
SET occurance = 0;
END LOOP;
CLOSE splitter_cur;
END;
但是当我执行此过程时,出现错误“MySQL said: #1054 - 'field list' 中的未知列 'i'”
但这里的 i 是一个用于旋转循环的变量。
有什么解决办法吗?请帮助我...提前谢谢您...
最佳答案
您必须在查询中嵌入变量 i
的值,但您没有这样做。
更改:
SET sel_query = "SELECT SUBSTRING_INDEX(comma,',',i) as abc from tmp1";
SET @sel_query = sel_query;
致:
SET @sel_query = CONCAT( "SELECT SUBSTRING_INDEX(comma,',',", i, ") as abc from tmp1 )";
关于php - #1054 mysql 过程中字段列表中的未知列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37025314/