为了账号安全,请及时绑定邮箱和手机立即绑定

是否可以进行递归SQL查询?

是否可以进行递归SQL查询?

一只甜甜圈 2019-11-12 09:57:00
我有一个与此类似的表:CREATE TABLE example (  id integer primary key,  name char(200),  parentid integer,  value integer);我可以使用parentid字段将数据排列成树形结构。现在这是我无法解决的问题。给定一个parentid,是否有可能编写一条SQL语句以将该parentid下的所有值字段加起来并向下递归树的分支?更新:我正在使用posgreSQL,因此无法使用精美的MS-SQL功能。无论如何,我希望将其视为通用SQL问题。顺便说一句,给我留下深刻印象的是在提出问题的15分钟之内有6个答案!去堆栈溢出!
查看完整描述

3 回答

?
拉莫斯之舞

TA贡献1820条经验 获得超10个赞

如果要使用可在任何ANSI SQL-92 RDBMS 上使用的便携式解决方案,则需要在表中添加一个新列。


Joe Celko是使用嵌套集方法在SQL中存储层次结构的原始作者。您可以使用Google “嵌套集”层次结构来了解有关背景的更多信息。


或者,您可以将parentid重命名为leftid并添加一个rightid。


这里是我总结嵌套集的尝试,由于我不是Joe Celko,嵌套集将严重不足:SQL是基于集的语言,而邻接模型(存储父ID)不是层次结构的基于集的表示。因此,没有查询基于纯模式的邻接模式的方法。


但是,近年来,大多数主要平台都引入了扩展来解决这一精确问题。因此,如果有人回复了Postgres专用的解决方案,请务必使用该解决方案。


查看完整回答
反对 回复 2019-11-12
  • 3 回答
  • 0 关注
  • 538 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信