set nocount on
if object_id('tempdb..#')is not null drop table #
go
create table #(ID int,    name nvarchar(10),    Parent int) 
insert # select 1,    N'四川省...' , 0 
insert # select 2,    N'成都市...' , 1 
insert # select 3,    N'资阳市...' , 1 
insert # select 4,    N'绵阳市...' , 1 
insert # select 5,    N'双流县...' , 2 
insert # select 6,    N'武侯区...' , 2
select a.ID,a.name,b.name from # a inner join # b on b.id=a.Parent
/*ID          name       name
----------- ---------- ----------
2           成都市...     四川省...
3           资阳市...     四川省...
4           绵阳市...     四川省...
5           双流县...     成都市...
6           武侯区...     成都市...
*/

解决方案 »

  1.   

    select id,name,(select name from tb where id=a.parent) as parent from tb a
      

  2.   

    --更正下,应该是left join
    set nocount on
    if object_id('tempdb..#')is not null drop table #
    go
    create table #(ID int,    name nvarchar(10),    Parent int) 
    insert # select 1,    N'四川省...' , 0 
    insert # select 2,    N'成都市...' , 1 
    insert # select 3,    N'资阳市...' , 1 
    insert # select 4,    N'绵阳市...' , 1 
    insert # select 5,    N'双流县...' , 2 
    insert # select 6,    N'武侯区...' , 2
    select a.ID,a.name,b.name from # a left join # b on b.id=a.Parent
    /*ID          name       name
    ----------- ---------- ----------
    1           四川省...     NULL
    2           成都市...     四川省...
    3           资阳市...     四川省...
    4           绵阳市...     四川省...
    5           双流县...     成都市...
    6           武侯区...     成都市...
    */
      

  3.   

    有问题,你Parent的数字对应什么,就那样替换了
    是对应他上一级的所在的第几位吗,那数字联系的是什么。上面的题都没说明白就回答,真行!!!
      

  4.   

    select id,name,(select top 1 name from tb where parent=a.parent) as parent from tb a
      

  5.   

    select ID,name,ParentName=isnull((select name from tab where ID=aa.Parent),'')
     from tab aa