表结构是 想要得到的效果是 StoreID StoreName StoreShortName parentID
0 总店 总店 0
1 街道口店 街道口店 0
8 街道口分店 光谷店 1
6 光谷店 鲁磨店 0
7 光谷分店 亚贸店 6
9 武昌总店 户部巷店 0
10 四门口店 江边店 9
0 总店 总店 0
1 街道口店 街道口店 0
8 街道口分店 光谷店 1
6 光谷店 鲁磨店 0
7 光谷分店 亚贸店 6
9 武昌总店 户部巷店 0
10 四门口店 江边店 9
SELECT *,CAST(StoreID AS VARCHAR(8000))[PATH] FROM TB WHERE StoreID=0
UNION ALL
SELECT T1.*,T2.[PATH]+'-'+CAST(T1.StoreID AS VARCHAR(10)) FROM TB T1 JOIN CTE T2 ON T1.StoreID<>0 AND T1.parentID=T2.StoreID
)
SELECT * FROM CTE ORDER BY [PATH]
select StoreID,StoreName,StoreShortName,parentID
from t
order by StoreName
只针对本问题的解决,还是建议增加级次字段,或者改变编码方式