【发布时间】:2014-05-30 01:35:30
【问题描述】:
我对高级 SQL 查询不是很有经验,我熟悉基本语句和基本连接,目前正试图弄清楚如何编写一个似乎超出我的深度并且我无法做到的查询到目前为止从谷歌找到一个解决方案,我希望有人能指出我正确的方向。
我正在使用的表有一个 ID 列和一个“父 ID”列。
我正在寻找 ID 为“1”的所有后代 - 父 ID 为“1”的行,父 ID 等于父 ID 为“1”的任何行 ID 的行等。目前我已经一直手动执行此操作,但到目前为止有数百个后代,我觉得有一种方法可以将其放入一个查询中。
任何帮助将不胜感激,如果不清楚,我也可以尝试澄清。
编辑 - 我使用以下查询:
with cteMappings as (
select map_id, parent_map_id, map_name
from admin_map
where map_id = '1'
union all
select a.map_id, a.parent_map_id, a.map_name
from admin_map a
inner join cteMappings m
on a.parent_map_id = m.map_id
)
select map_id, parent_map_id, map_name
from cteMappings
【问题讨论】:
-
您使用的是什么数据库?您正在寻找的是递归查询(通常使用递归 CTE 实现),但并非所有数据库都支持此功能。
-
这是一个 SQL 数据库。我不确定这是否是您正在寻找的答案。使用 SQL Server 管理工作室。如果我可以进一步澄清,请告诉我。
-
Corey:SQL 只是 查询语言 - 不是数据库产品。您使用的是 (Microsoft) SQL Server - 使用
sql-server标记来表明这一点! (我已经为你添加了这个)
标签: sql sql-server database join