假设我们有一个具有经典“经理 ID”递归关系的表:
用户 user_id 整数 manager_id int(指user_id)
如果您随机选择表中的 2 行或 2 个节点,您如何找到最低级别的共同祖先?我的平台是 SQL Server 2005 (Transact-SQL),但任何符合 ANSI 标准的 SQL 也可以工作...
最佳答案
对 Quassnoi 的答案进行了一些小的修改,它起作用了:
WITH
hier1 (id, parent) AS (
SELECT id, parent
FROM table
WHERE id = @user1
UNION ALL
SELECT id, parent
FROM table l, hier1 h
WHERE l.id = h.parent
),
hier2 (id, parent) AS (
SELECT id, parent
FROM table
WHERE id = @user2
UNION ALL
SELECT id, parent
FROM table l, hier1 h
WHERE l.id = h.parent
)
SELECT TOP 1 hier1.id
FROM hier1, hier2
WHERE hier1.id = hier2.id
关于sql - 如何在递归表(SQL)中获取 2 行的最低公共(public)父级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/608076/