0

我有一张桌子

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

4

2 回答 2

1

您必须使用 sql 递归查询可能对您有帮助http://msdn.microsoft.com/en-us/library/ms186243(v=sql.105).aspx

于 2013-03-14T10:01:19.810 回答
0

这应该可以完成工作:只需跳转到父级,直到到达顶部并计算迭代次数。

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
于 2013-03-14T09:07:51.363 回答