加入收藏 | 设为首页 | 会员中心 | 我要投稿 衡阳站长网 (https://www.0734zz.cn/)- 数据集成、设备管理、备份、数据加密、智能搜索!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

使用SQL遍历关系数据库中的树状数据

发布时间:2020-12-24 19:44:04 所属栏目:MsSql教程 来源:网络整理
导读:有没有办法在SQL中遍历树数据?我在Oracle中了解connect by,但在其他SQL实现中是否有另一种方法可以做到这一点?我问,因为使用connect by比编写循环或递归函数更容易为每个结果运行查询. 由于有些人似乎对“树数据”这个短语感到困惑,我将进一步解释:我的意

有没有办法在SQL中遍历树数据?我在Oracle中了解connect by,但在其他SQL实现中是否有另一种方法可以做到这一点?我问,因为使用connect by比编写循环或递归函数更容易为每个结果运行查询.

由于有些人似乎对“树数据”这个短语感到困惑,我将进一步解释:我的意思是关于具有parent_id或类似字段的表,其中包含来自同一表中另一行的主键.

问题来自于我在Oracle数据库中处理以这种方式存储的数据的经验,并且知道connect by未在其他DBMS中实现.如果要使用标准SQL,则必须为每个想要上升的父项创建一个新的表别名.这很容易失控.

解决方法

Celko’s book是一个很好的资源 – 如果有点过于“学术”.

我也真的找到了this method,被称为’封闭桌’工作得相当好.

如果您正在使用允许递归CTE的数据库(例如PostgreSQL 8.4 or newer或SQL Server 2005 or newer),那么它们确实是最好的方法.如果您使用的是Oracle,那么总会有令人尊敬的“connect by”.

根据我的经验,将一组表格放在“天真树”模式中更为常见,并且必须弄清楚如何从该存储中提取正确的树,而不是有机会创建清洁工. “封闭表”结构.

(编辑:衡阳站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读