关于SQL递归查询问题

2025-03-06 16:17:21
推荐回答(3个)
回答1:

我来测一下,等会上传结果

你还有一个表没用到。
WITH cte AS (
SELECT RegionID,RegionName,RegionPID FROM [tbRegionTree] WHERE regionPID='01'
UNION ALL
SELECT d.RegionID,d.RegionName,d.RegionPID FROM cte c inner JOIN [tbRegionTree] d ON d.regionPID=c.RegionID

)
SELECT * FROM cte
上面是找到 01 中国的。

下面为非中国的。 条件上处理下
WITH cte AS (
SELECT RegionID,RegionName,RegionPID FROM [tbRegionTree] WHERE regionPID NOT LIKE '01%'
UNION ALL
SELECT d.RegionID,d.RegionName,d.RegionPID FROM cte c inner JOIN [tbRegionTree] d ON d.regionPID=c.RegionID

)
SELECT * FROM cte

回答2:

select * from dbo.tbRegionInfo where RegionID NOT LIKE '01%' AND Len(RegionID)>2

我发现根本就没必要用到你的tbRegionTree表 

看起来你的表没有设计好。。。

回答3:

递归干嘛,你RegionID就是一个绝对地址。Like就好了。