【发布时间】:2019-03-26 17:51:54
【问题描述】:
我想从同一张表中获取最后一个参考 ID。我有下表。
ID UserId DelegatedToUserId
1 100 101
2 101 102
3 102 103
4 103 NULL
5 104 109
我就是想不通。我知道我想要什么,只是无法在屏幕上显示出来。因此,当我要求 100 查询时应返回 103,当我再次询问 101 或 102 时应返回 103。当用户输入 104 时应返回 109
当我要求 103 时,它应该返回 103,因为没有代表。
这可以在单个 sql 查询中完成吗?
【问题讨论】:
-
"这可以在单个 sql 查询中完成吗?" 是的,常见的方法是使用递归通用表表达式 (rCTE)。您以前使用过这些,或对它们进行过任何研究吗?
-
此外,如果输入
104,查询将不会返回任何行,因为您的表中没有用户109。由于用户104没有父级(109不存在),因此它们是孤儿,因此当您返回不存在的“顶级父行”时。这与103不同,因为它明确指出它没有父级;它可以被识别为“根”。
标签: sql sql-server sql-optimization