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

前端之家收集整理的这篇文章主要介绍了使用SQL遍历关系数据库中的树状数据前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
有没有办法在sql中遍历树数据?我在Oracle中了解connect by,但在其他sql实现中是否有另一种方法可以做到这一点?我问,因为使用connect by比编写循环或递归函数更容易为每个结果运行查询.

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

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

解决方法

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

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

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

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

原文链接:https://www.f2er.com/mssql/80497.html

猜你在找的MsSQL相关文章