我有一个表,有两列,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/

10-10 05:17