mysql选择递归父id错误“where子句”中的未知列

mysql选择递归父id错误“where子句”中的未知列,mysql,Mysql,我是初学者,我尝试实现一个基于父id的递归查询 我在一个旧答案中发现了一个很好的例子: 表格如下: 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 depa

我是初学者,我尝试实现一个基于父id的递归查询

我在一个旧答案中发现了一个很好的例子:

表格如下:

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;
我之所以选择该示例,是因为这里还有一个工作演示:

问题是: sqlfiddle在线运行良好,但如果我在PC中尝试过,会出现以下错误: “where子句”中的未知列“\u id”


我使用mysql5.7.9在WAMP上运行,我用@d变量代替了id来解决它们

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