php - #1054 mysql 过程中字段列表中的未知列

标签 php mysql

我的表名称为“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/

相关文章:

mysql - 枚举值范围定义 MySQL

php - 为什么数据不能正确传递 codeigniter 模型

mysql - Select涉及多对多表

php - 动态透视MYSQL不完整SQL

php - iOS 无法通过 PHP 在 iPhone 应用程序和 MySQL 数据库之间进行通信

mysql查询优化where与inner join

php - 找出 mysql 查询将要访问哪些表(事先)

PHP版本升级5.3.25到5.6

php - javascript+php 更改 url 值

php - Laravel 从模型中提取自定义方法