我有一个表,有两列,usersID
和它们的siblingID
找到给定用户的所有兄弟姐妹的最佳方法是什么?
这个问题很复杂。这是一个例子。
用户1有5个兄弟(2,3,4,5,6)
桌子看起来像这样
userID|siblingID
1 | 2
1 | 3
6 | 5
5 | 3
3 | 1
4 | 6
最佳答案
ANSI SQL:
with recursive tree (userid, siblingid) as
(
select userid,
siblingid
from users
where userId = 1
union all
select c.userid,
c.siblingid
from users c
join tree p on p.userid c.siblingId
)
select *
from tree;
对于Oracle 11.2和SQL Server(他们显然没有仔细查看ANSI规范),您需要删除
recursive
关键字(根据标准,这是必需的)关于mysql - 棘手的递归MySQL查询,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14266697/