SQL 怎么对分类的表进行查询?

来源:百度知道 编辑:UC知道 时间:2024/05/02 15:27:57
表 TT 的数据:
ID FID Name
1 0 A
2 0 B
3 0 C
4 3 CC
5 2 BB
6 1 AA
7 6 AAA

请问怎么写 SQL 语句,使我能得到下面的数据?

1 0 A
6 1 AA
7 6 AAA
2 0 B
5 2 BB
3 0 C
4 3 CC

我看这应该是一个树
解法是这样的:
create table TT(ID int,FID int,Name varchar(10))
insert into TT select 1,0,'A'
insert into TT select 2,0,'B'
insert into TT select 3,0,'C'
insert into TT select 4,3,'CC'
insert into TT select 5,2,'BB'
insert into TT select 6,1,'AA'
insert into TT select 7,6,'AAA'
go

--创建用户定义函数
create function f_GetString ( @ID int )
returns varchar(4000)
as
begin
declare @ret varchar(4000), @FID int

set @ret = Right( '0000' + RTrim( @ID ), 4 )
while exists( select 1 from TT where ID = @ID and FID != 0 )
begin
select @FID = FID from TT where ID = @ID and FID != 0
set @ID = @FID
set @ret = Right( '0000' + RTrim( @ID ), 4 ) + @ret
end
return @ret
end
go

select * from TT order by dbo.f_GetString( ID )
/*