sql - 查找一定深度的所有链接

标签 sql

这是一道作业题。我们通过动态构建 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/

相关文章:

SQL 幂等性

sql - 对于大型数据库,选择不同需要很长时间

java - 为什么 Oracle Pivot 产生不存在的结果?

mysql - mysql 中的行解释是否意味着该表没有正确索引?

sql - IS NULL 与 where 子句中的 = NULL + SQL Server

sql - 我该如何处理这个泛化设计问题?

php - 从 textfield 和 textarea 插入到 sql 不起作用

sql - 选择某一范围内仅出现一个值的记录

mysql - 优雅的百分比解析 - MySQL

在 SQL Server 中插入日期时间的 SQL 查询