2017-05-08 69 views
0

我是初学者,我尝试实现基于parent_id的递归查询。mysql select递归父id错误'where子句'中的未知列

我已经找到了一个例子,在一个旧的答案做工不错:

表是:

create table department (id int, name varchar(100), id_parent int null); 
insert into department values (1, 'DEPARTMENT 1', NULL); 
insert into department values (2, 'DEPARTMENT 2', 1); 
insert into department values (3, 'DEPARTMENT 3', 2); 
insert into department values (4, 'DEPARTMENT ABCD', 3); 
insert into department values (5, 'DEPARTMENT X', NULL); 
insert into department values (6, 'DEPARTMENT Y', 5); 
insert into department values (7, 'DEPARTMENT Z', 6); 
insert into department values (8, 'DEPARTMENT AB', 7); 

和查询:

SELECT D2.id, D2.name, D2.id_parent 
FROM (
    SELECT 
     @d AS _id, 
     (SELECT @d := id_parent FROM department WHERE id = _id) AS id_parent, 
     @l := @l + 1 AS level 
    FROM 
     (SELECT 
      @d := (select id from department where name like 'DEPARTMENT AB'), 
      @l := 0 
     ) initial_level, 
     department D 
    WHERE @d <> 0 
) D1 
JOIN department D2 ON D1._id = D2.id 
ORDER BY D1.level DESC; 

我选择了一个例子,因为它这里也有一个工作演示: http://sqlfiddle.com/#!9/f182fb/4

问题: 所以在网上sqlfiddle该工作不错,但如果我想他们在我的电脑得到这个错误:在 未知列'_id“where子句”

我在WAMP运行与MYSQL5 .7.9

回答

0

我已经使用@d变量而不是_id来解决它们。

(SELECT @d := id_parent FROM department WHERE id = @d) AS id_parent