表格
id parent_id
--------------
a_1 NULL
a_2 NULL
b_1 a_1
c_1 b_1
d_1 c_1
现在,我有id:d_1
如何在一个SQL查询中获得a_1
,b_1
,c_1
? (d_1
的祖先ids)?
答案 0 :(得分:2)
SELECT c.id, b.id, a.id
FROM T
INNER JOIN T AS c on T.parent_id=c.id
INNER JOIN T AS b ON c.parent_id = b.id
INNER JOIN T as a ON b.parent_id = a.id
假设您的表名为T.未经测试。不确定如果d没有三个父母会发生什么,可能你没有得到一个东西,可能会尝试LEFT JOIN为那些情况获得伟大父母的NULL值。此外,最后的JOIN并不是必需的,因为你可以简单地选择b.parent_id而不是a.id,但是,你知道,只是为了把模式带回家;)
答案 1 :(得分:1)
我真的认为你不能在一个简单的SQL语句中这样做,这是SQL语言的一个基本限制。
Here是一个令人发指的存储过程,大致可以执行您想要的操作(对于SQL Server)。所以你需要做这样的事情。