首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL多级父子SP和IN子句

MySQL多级父子SP和IN子句
EN

Stack Overflow用户
提问于 2012-06-11 17:57:52
回答 1查看 554关注 0票数 3

我正在处理一个包含父子关系的表referrals

我需要获取父代->子代和子代-> ....

对于上面的表数据,我希望得到的结果是

我看过SOF的一些代码,但不知道它们是如何工作的,并在我的脑海中尝试了一个非常简单的逻辑,但不幸的是,由于奇怪的原因,它不能工作

我已经为它编写了存储过程,但是IN CLAUSE遇到了一个问题

代码语言:javascript
复制
DELIMITER $$

DROP PROCEDURE IF EXISTS `GetHierarchy3`$$

CREATE DEFINER=`root`@`localhost` PROCEDURE `GetHierarchy3`()
BEGIN
    DECLARE idss VARCHAR(225);
    SET @currentParentID := 999999;
    SET @lastRowCount := 0;

  ## A ##   
        INSERT INTO referrals_copy SELECT * FROM referrals WHERE uid1 = @currentParentID;

    SET @lastRowCount := ROW_COUNT();

 ## B ##
        SELECT GROUP_CONCAT(uid2)  INTO @idss FROM referrals WHERE  uid1 = @currentParentID;


    #SELECT @lastRowCount;
    SELECT * FROM referrals_copy;

    WHILE @lastRowCount > 0 DO
    SELECT "here";

        SELECT @idss;
  ## C ##
            INSERT INTO referrals_copy SELECT uid1, uid2 FROM referrals 
                WHERE uid1 IN (@idss);
            SET @lastRowCount := ROW_COUNT();
        #set @ids := NULL;
        SELECT @idss;
        SELECT GROUP_CONCAT(uid2) FROM referrals WHERE  uid1 IN (@idss);
        SELECT @idss;
        SET @lastRowCount := 0;

    END WHILE;


    -- return the final set now
    SELECT 
            *
        FROM referrals_copy;

END$$

CALL GetHierarchy3();

首先,我在第一个查询A中获得我想要的主父节点的子节点,工作正常

然后,将主父节点的子节点放入变量@idss查询B中,运行正常

然后在循环中,我在查询中使用变量idss来获取其子查询C,并将它们放入结果表中……这是有问题的部分。

在这里,对于第一次迭代,我在变量idss中使用了1111,2222,这将导致在表中插入值{3333, 4444} child of 1111, and {5555} child of 2222,但它只放入1111的子项,即3333,4444,而不是5555

我尝试替换查询C中的变量进行检查,它与Claues`中的值1111,2222' within一起工作得很好。

您是否知道IN子句为什么不接受来自group concat的逗号分隔值或修复此代码的任何想法

问候

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-06-11 19:03:02

尝试此FIND_IN_SET(uid1,@idss)

您必须替换此查询部分

SELECT GROUP_CONCAT(uid2) FROM referrals WHERE uid1 IN (@idss);

进入到这个

SELECT GROUP_CONCAT(uid2) FROM referrals WHERE FIND_IN_SET(uid1,@idss);

我希望这对你有用……

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10977921

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档