这是一道作业题。我们通过动态构建 SQL 查询来解决它。但我们对是否可以使用纯 SQL 感兴趣。
所需内容的简化: 有一个包含两列的表:源 ID 和目标 ID。给定一个 id 和一个数字 n,我们需要从给定的 id 中找到距离小于等于 n 的所有 id。
澄清编辑:
将表格视为代表网络链接。如果行 (1,3) 出现在表中,则表示网页 1 有指向网页 3 的链接。
我们需要找到从起始网页可以通过 n 次或更少点击访问的所有网页。
由于这是一个“好奇”的问题,请使用您喜欢的任何 SQL 实现。 “纯 SQL”意味着适合“结构化查询风格”的一切。使用循环不被视为“纯 SQL”(为了这个问题)。
最佳答案
你不能表达transitive closure使用关系代数或纯旧 SQL,因此不可能的任何 N 的通用解决方案。
您可以做的最好的事情是在“编译时”选择 N 并使用大量连接,正如您已经在动态生成的查询方法中所做的那样。
关于sql - 查找一定深度的所有链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5998556/