【发布时间】:2011-01-13 02:01:52
【问题描述】:
假设您有下表:
items(item_id, item_parent)
...它是一个自引用表 - item_parent 引用 item_id。
您将使用什么 SQL 查询来选择表中的所有项目及其深度,其中项目的深度是该项目的所有父项和祖父项的总和。
如果以下是表格的内容:
item_id item_parent
----------- -----------
1 0
2 0
3 2
4 2
5 3
...查询应检索以下对象集:
{"item_id":1,"depth":0}
{"item_id":2,"depth":0}
{"item_id":3,"depth":1}
{"item_id":4,"depth":1}
{"item_id":5,"depth":2}
附:我正在寻找支持 MySQL 的方法。
【问题讨论】:
-
什么数据库和版本?如果完全支持,递归查询是特定于供应商的。
-
@RBarryYoung:假设他使用的是 MS SQL Server。
-
没错,但递归 CTE 是标准的一部分,而 SQL Server 不是唯一支持它们的产品。
-
Emmanuil:如果您需要 MySql 特定的答案,那么您应该在某处指定。
-
@RBarryYoung:对此我深表歉意。我错误地认为答案适用于任何 DBMS。
标签: mysql sql recursion hierarchy