近日转移数据库遇到一个递归查询问题,相信不少朋友在开发中都会遇到,通常特定数据库都有特定的实现。例如Oracle可以用
Select * from …. Where [结果过滤条件语句]
Start with [and起始条件过滤语句]
Connect by prior [and中间记录过滤条件语句]
但是用非标准的sql来实现会和数据库绑定,当你的项目要变更数据库时会遇到你的程序逻辑运行出错。几经思考发现可以用标准sql自连接来实现递归功能,例子:
有如下表tb(id,startpoint,endpoint);
1 | A | B
2 | A | C
3 | A | D
4 | B | E
5 | C | F
6 | D | B
7 | E | I
8 | G | H
查找出从A出发可以到达的目的点。(结果应该是B,C,D,E,F,I)
(select a from
(select table1.endpoint a,table2.endpoint b
from tb table1, tb table2
where table1.endpoint=table2.startpoint) newtable1)
union
(select b from
(select table1.endpoint a,table2.endpoint b
from tb table1, tb table2
where table1.endpoint=table2.startpoint) newtable2)
实现完后发现性能不怎么样,希望有朋友有更好的实现可以共享下。
分享到:
相关推荐
│ │ 2.5.3 工作日处理函数(标准节假日).sql │ │ 2.5.3 工作日处理函数(自定义节假日).sql │ │ 2.5.4 计算工作时间的函数.sql │ │ │ └─其他 │ 交叉表.sql │ 任意两个时间之间的星期几的次数-横.sql │ ...
│ 2.4.2 日期推算处理.sql │ │ 2.4.3 特殊日期加减函数.sql │ │ 2.5.1 查询指定日期段内过生日的人员.sql │ │ 2.5.2 生成日期列表的函数.sql │ │ 2.5.3 工作日处理函数(标准节假日).sql...
12.2.2 避免子查询的错误执行计划 350 12.2.3 所在环境的资源不足等问题 351 12.3 本章习题、总结与延伸 351 第13章 动手,过程函数优化让SQL飞 352 13.1 PL/SQL优化重点 353 13.1.1 定义类型的优化 353 ...
部门管理的无限极分类 产品分类也是通用 包括一个controller文件 一个model文件 一个view文件夹 和一个sql文件 放在相应位置按需求改动即可使用
12.2.2 避免子查询的错误执行计划 350 12.2.3 所在环境的资源不足等问题 351 12.3 本章习题、总结与延伸 351 第13章 动手,过程函数优化让SQL飞 352 13.1 PL/SQL优化重点 353 13.1.1 定义类型的优化 353 ...
3.8 递归查询 3.9 合并 3.10 利用外部调用完成复杂操作 3.11 性能考虑 3.12 小结 第4章 XML集成 4.1 XML数据类型 4.2 提取XML格式的关系数据 4.3 有关XML索引的提示 4.4 层次数据概述 ...
支持多sql多数据库表sql间的递归关联查询, 如一个查询表单中配置了3个查询sql, 可用用第一个sql的查询结果中的某个字段作为第二个查询sql的where条件 单sql查询的支持分页 查询功能配置步骤 创建数据源 创建查询业务...
CTE是在内存中准备好数据,而不是每次一条往返服务器和客户端一次。如果需要再插入到临时表...这篇文章主要介绍了sql server使用公用表表达式CTE通过递归方式编写通用函数自动生成连续数字和日期 ,需要的朋友可以参考下
7.2.4 一种通用的出错处理方法 7.2.5 XACT_ABOR 7.2.6 Raiserro 7.3 小结 7.4 练习 第8章 确定专业的编程风格 8.1 源代码控制的概念 8.1.1 Microsoft Visual SourceSafe简介 8.1.2 管理Visual SourceSafe数据库 ...
3.8 递归查询 3.9 合并 3.10 利用外部调用完成复杂操作 3.11 性能考虑 3.12 小结 第4章 XML集成 4.1 XML数据类型 4.2 提取XML格式的关系数据 4.3 有关XML索引的提示 4.4 层次数据概述 ...
7.2.4 一种通用的出错处理方法 7.2.5 XACT_ABOR 7.2.6 Raiserro 7.3 小结 7.4 练习 第8章 确定专业的编程风格 8.1 源代码控制的概念 8.1.1 Microsoft Visual SourceSafe简介 8.1.2 管理Visual SourceSafe数据库 ...
3.8 递归查询 3.9 合并 3.10 利用外部调用完成复杂操作 3.11 性能考虑 3.12 小结 第4章 XML集成 4.1 XML数据类型 4.2 提取XML格式的关系数据 4.3 有关XML索引的提示 4.4 层次数据概述 ...
3.8 递归查询 3.9 合并 3.10 利用外部调用完成复杂操作 3.11 性能考虑 3.12 小结 第4章 XML集成 4.1 XML数据类型 4.2 提取XML格式的关系数据 4.3 有关XML索引的提示 4.4 层次数据概述 ...
除了SQL,Crux还提供了查询接口,该接口可用于表示复杂的联接和递归图遍历。 快速链接 < groupId>juxt < artifactId>crux-core < version>20.12-1.13.0-beta [juxt/crux-core " 20.12-1.13.0-beta " ] juxt/...
3.8 递归查询 3.9 合并 3.10 利用外部调用完成复杂操作 3.11 性能考虑 3.12 小结 第4章 XML集成 4.1 XML数据类型 4.2 提取XML格式的关系数据 4.3 有关XML索引的提示 4.4 层次数据概述 ...
3.8 递归查询 3.9 合并 3.10 利用外部调用完成复杂操作 3.11 性能考虑 3.12 小结 第4章 XML集成 4.1 XML数据类型 4.2 提取XML格式的关系数据 4.3 有关XML索引的提示 4.4 层次数据概述 ...
结构化查询语言(Structured Query Language,简称SQL)是用来访问关系型数据库一种通用语言,属于第四代语言(4GL),其执行特点是非过程化,即不用指明执行的具体方法和途径,而是简单地调用相应语句来直接取得...