mysql - 如何使用 join 到 mysql 函数中

标签 mysql

我有一个函数如下:

DELIMITER $$
DROP FUNCTION IF EXISTS `vmtest`.`hello2`$$
CREATE DEFINER = `root`@`localhost` FUNCTION `vmtest`.`hello2` (s CHAR(20)) 
RETURNS TEXT
BEGIN 
    DECLARE RETURNID INTEGER;
    DECLARE RETURNNAME TEXT;
    DECLARE PARENTID INTEGER;
    DECLARE RTN TEXT;
    DECLARE RTNNAME TEXT;
    SET RTN = "";
    SET PARENTID = s;

    WHILE PARENTID > 0 DO
        SELECT 
        t1.category_parent_id INTO RETURNID,
        t2.category_name INTO RETURNNAME  
  FROM e255g_virtuemart_category_categories AS t1
        INNER JOIN e255g_virtuemart_categories_de_de AS t2 on t1.id = t2.virtuemart_category_id
        WHERE t1.id = PARENTID;
        IF RETURNID >0 THEN
            IF RTN ="" THEN
                SET RTN = RETURNID;
            ELSE
                SET RTN = CONCAT(RTN, ',', RETURNID);
                SET RETURNNAME = CONCAT(RTNNAME, ',', RETURNNAME);
            END IF;
        END IF;
        SET PARENTID = RETURNID;            
    END WHILE;
    RETURN RETURNNAME;
END$$

DELIMITER ;

我尝试在函数中使用联接查询,但它给了我错误,如下所示:

Error in query (1327): Undeclared variable: t2

请帮忙

最佳答案

它对多个 INTO 变量有点敏感。它只是:

DELIMITER $$
DROP FUNCTION IF EXISTS `vmtest`.`hello2`$$
CREATE DEFINER = `root`@`localhost` FUNCTION `vmtest`.`hello2` (s CHAR(20)) 
RETURNS TEXT
BEGIN 
    DECLARE RETURNID INTEGER;
    DECLARE RETURNNAME TEXT;
    DECLARE PARENTID INTEGER;
    DECLARE RTN TEXT;
    DECLARE RTNNAME TEXT;
    SET RTN = "";
    SET PARENTID = s;

    WHILE PARENTID > 0 DO
        SELECT 
        t1.category_parent_id,t2.category_name INTO RETURNID,RETURNNAME  
        FROM e255g_virtuemart_category_categories AS t1
        INNER JOIN e255g_virtuemart_categories_de_de AS t2 
        on t1.id = t2.virtuemart_category_id
        WHERE t1.id = PARENTID;
        IF RETURNID >0 THEN
            IF RTN ="" THEN
                SET RTN = RETURNID;
            ELSE
                SET RTN = CONCAT(RTN, ',', RETURNID);
                SET RETURNNAME = CONCAT(RTNNAME, ',', RETURNNAME);
            END IF;
        END IF;
        SET PARENTID = RETURNID;            
    END WHILE;
    RETURN RETURNNAME;
END$$

DELIMITER ; 

所以它是...INTO var1,var2,...

关于mysql - 如何使用 join 到 mysql 函数中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38745548/

相关文章:

Mysql:选择每个ID的最后一次出现

mysql - 我应该使用什么 MySQL 代码从数据库中提取数据?

mysql - 如何查看 ibdata 文件的内容?

MySQL 从两个表中选择行,即使只有一个表可能有该行

java - 如果另一个程序更新数据库,hibernate 不会更新 id

mysql - 如何在mysql中使用where exists or not exists实现相交

PHP时间问题

mysql - mysql中的快速分页?

MYSQL本地数据infile语法错误

php - MySQL - 构造查询以丢弃常见结果