某表users两个字段
ID parentID  name
1            老王        
2     1      小张        
3     1      大刘        
做个查询
select a.name,b.name from users a 
join users b
on a.id=b.parentid
输出自己和自己parentID的信息
name            name
老王         小张        
老王         大刘由于老王没有parentID,所以少了老王的信息
怎么样能够输入老王信息,如果没有parentID输出个“空”什么的?
即:
name            name
空              老王
老王         小张        
老王         大刘

解决方案 »

  1.   


    declare @table table (ID int,parentID int,name varchar(4))
    insert into @table
    select 1,null,'老王' union all
    select 2,1,'小张' union all
    select 3,1,'大刘'select a.name,b.name from @table a 
    right join @table b
    on a.id=b.parentid
    /*
    name name
    ---- ----
    NULL 老王
    老王   小张
    老王   大刘
    */
      

  2.   


    select a.name,b.name from users a 
    right join users b
    on a.id=b.parentid
      

  3.   

    select
     isnull(a.name,'空') as name,b.name 
    from
     users a 
    right join users b on a.id=b.parentid
      

  4.   

    用右连接right join,以右表users b为基准,查出符合b表的所有数据。
    select a.name,b.name from users a right join users b on a.id=b.parentid
      

  5.   

    如果再添加一个表呢,如address
    address  uid           id(key)
    1号         1          1         
    2号         1          2         
    3号         2          3         
    uid与users的id进行关联
    显示这三条记录对应的id,以及该id对应parentid的name呢select ad.address,ad.uid,a.name,b.name from address ad
    inner join users a
    on ad.uid=a.id
    这时候输出三条记录外加idselect ad.address,ad.uid,a.name,b.name from address ad
    inner join users a
    on ad.uid=a.id
    right join users b
    on a.id=b.parentid
      

  6.   

    create table users(ID int,parentID int,name varchar(4))
    insert into users
    select 1,null,'老王' union all
    select 2,1,'小张' union all
    select 3,1,'大刘'
    select a.name,b.name from users a 
    right join users b
    on a.id=b.parentid
    --右连接
      

  7.   

    啊,明白了,回复完才看到yangting_lisa的解释
    明白了。谢谢