我有一张桌子
id name parentid
----------------
1 a 0
2 b 1
3 c 2
4 d 1
现在我想用
- 如果直接父 ID 计数 = 6,则为 level1,
- 如果有 6 个 level1 计数然后 level2,
- 如果有 6 个 level2 计数然后 level3,依此类推
我正在使用 SQL Server 2005 Express
我有一张桌子
id name parentid
----------------
1 a 0
2 b 1
3 c 2
4 d 1
现在我想用
我正在使用 SQL Server 2005 Express
您必须使用 sql 递归查询可能对您有帮助http://msdn.microsoft.com/en-us/library/ms186243(v=sql.105).aspx
这应该可以完成工作:只需跳转到父级,直到到达顶部并计算迭代次数。
create function dbo.CalcLevel (@ID int)
returns int
as
begin
declare @level int=0
while @ID != 0 begin
select @ID=parentID from MyTable where ID=@ID
set @level = @level + 1
if (@level = 1000) set @ID = 0 -- compensate endless loop
end
return @level
end