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

我有一个与此类似的表:


CREATE TABLE example (

  id integer primary key,

  name char(200),

  parentid integer,

  value integer);

我可以使用parentid字段将数据排列成树形结构。


现在这是我无法解决的问题。给定一个parentid,是否有可能编写一条SQL语句以将该parentid下的所有值字段加起来并向下递归树的分支?


更新:我正在使用posgreSQL,因此无法使用精美的MS-SQL功能。无论如何,我希望将其视为通用SQL问题。


顺便说一句,给我留下深刻印象的是在提出问题的15分钟之内有6个答案!去堆栈溢出!


一只甜甜圈
浏览 546回答 3
3回答

拉莫斯之舞

如果要使用可在任何ANSI SQL-92 RDBMS 上使用的便携式解决方案,则需要在表中添加一个新列。Joe Celko是使用嵌套集方法在SQL中存储层次结构的原始作者。您可以使用Google “嵌套集”层次结构来了解有关背景的更多信息。或者,您可以将parentid重命名为leftid并添加一个rightid。这里是我总结嵌套集的尝试,由于我不是Joe Celko,嵌套集将严重不足:SQL是基于集的语言,而邻接模型(存储父ID)不是层次结构的基于集的表示。因此,没有查询基于纯模式的邻接模式的方法。但是,近年来,大多数主要平台都引入了扩展来解决这一精确问题。因此,如果有人回复了Postgres专用的解决方案,请务必使用该解决方案。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

SQL Server