【发布时间】:2019-04-29 23:06:09
【问题描述】:
我有一个包含 3 级分层数据的表,但是我的查询对级别进行了错误的分类。
我的查询:
SELECT t1.name AS lev1, t2.name as lev2, t3.name as lev3
FROM sds_test AS t1
LEFT JOIN sds_test AS t2 ON t2.parent_id = t1.ID
LEFT JOIN sds_test AS t3 ON t3.parent_id = t2.ID;
博物馆和艺术学校类别增加了一行,因为它们是顶级类别,这是我想消除的。如果我把级别 2 不是 NULL,它会弄乱那些具有单个顶级级别的类别,例如航空
期望的结果博物馆和艺术学校不应该是顶级类别,也不应该有单独的行。
我不知道如何解决这个问题,因为 CTE 也得到了类似的结果。我尝试使用案例
case when parent_id = NULL then
这再次没有给我想要的结果。
用于重新生成表的 SQL 查询:
create table sds_test (id int, name varchar(30), parent_id int);
insert into sds_test values(1, 'Educational Institute', NULL);
insert into sds_test values(2, 'Speciality Schools', 1);
insert into sds_test values(3, 'Arts School', 2);
insert into sds_test values(4, 'Restraunts', NULL);
insert into sds_test values(5, 'Asian Restraunts', 4);
insert into sds_test values(6, 'malasian Rest', 5);
insert into sds_test values(7, 'Recreational', NULL);
insert into sds_test values(8, 'Museum', 7);
insert into sds_test values(9, 'Aviation', NULL);
【问题讨论】:
-
请显示您的实际结果和您想要的结果。
-
添加了所需的结果