请你帮忙从下面的输入表中生成输出表(提供截图。基本上我需要根据每行中的pid从cn中获取pcn。我使用了一个case语句,但数据是巨大而且它不是一种可持续的方式,因此自我加入会很好。但我没有从下面的自联接查询获得预期的输出
这是我尝试过的自联接查询。
select b.id, b.cn, a.pid, a.cn as pcn
from (
(select pid,cn from categories) a
left join (select id,cn from categories) b on a.pid=b.id
)
以下是我用于获取某些数据的数据的案例陈述
select id,cn,pid,
case
when pid is NULL then cn
when pid=1 then (select cn from categories where id=1)
when pid=13 then (select cn from categories where id=13)
END as pcn
from categories
答案 0 :(得分:0)
我认为这就是你想要的:
SELECT i.id, i.cn, i.pid, c.cn
FROM inputTable i
LEFT OUTER JOIN categories c ON (i.pid = c.id)
答案 1 :(得分:0)
select
i.id,
i.cn,
i.pid,
i2.cn as pcn
from input_table i
left join input_table i2
on i.pid=i2.id
答案 2 :(得分:0)
以下查询可以给我确切的预期结果。谢谢Jaime,jhilden和a_horse_with_no_name选择
i.id,i.cn,
i.pid,当i.pid为null然后i.cn其他i2.cn结束为pcn
的情况
FROM inputtable i LEFT OUTER JOIN inputtable i2 ON(i.pid = i2.id)