declare   @tb   table   
  (   
      User_name     varchar(10),   
      user_sex   varchar(10)   
  ) 
declare   @tb2   table   
  (   
      User_name     varchar(10),   
      user_sex   varchar(10)   
  )    
  insert   @tb   
  select   'name1','男'   union   
  select   'name2','女'   union   
  select   'name3','男'   union   
  select   'name4','女'   insert   @tb2   
  select   'name1','李路'   union
     select   'name1','李路2'   union
  
  select   'name2','张三'   union   
  select   'name3','李四'   union   
  select   'name4','王五'  
 select  abc.User_name,abc.user_sex,tt.user_sex
  from   @tb abc  inner join @tb2 tt on abc.User_name=tt.User_name
这是我建立的表跟查询,查询结果:
name1 男 李路
name1 男 李路2
name2 女 张三
name3 男 李四
name4 女 王五
我现在只想要@tb表中的内容,然后再加一列@tb2中的内容.如果表@tb2中有两行或多行name时,则查询结果也会出现多行name1,我只想取一行的.怎么操作.谢谢了.

解决方案 »

  1.   

    declare  @tb  table  
      (  
          User_name    varchar(10),  
          user_sex  varchar(10)  
      ) 
    declare  @tb2  table  
      (  
          User_name    varchar(10),  
          user_sex  varchar(10)  
      )    
      insert  @tb  
      select  'name1','男'  union  
      select  'name2','女'  union  
      select  'name3','男'  union  
      select  'name4','女'  insert  @tb2  
      select  'name1','李路'  union 
        select  'name1','李路2'  union 
      
      select  'name2','张三'  union  
      select  'name3','李四'  union  
      select  'name4','王五'  ;with t as
    (
    select rn=row_number() over(partition by abc.User_name order by getdate()),
          abc.[User_name],abc.user_sex t1_user_sex,tt.user_sex t2_user_sex   
    from  @tb abc  inner join @tb2 tt on abc.User_name=tt.User_name 
    )
    select case rn when 1 then [User_name] else '' end [User_name],
      case rn when 1 then t1_user_sex else '' end t1_user_sex,
      t2_user_sex 
    from t
    /*
    User_name  t1_user_sex t2_user_sex
    ---------- ----------- -----------
    name1      男           李路
                           李路2
    name2      女           张三
    name3      男           李四
    name4      女           王五(5 行受影响)
    */
      

  2.   

    declare  @tb  table  
      (  
          User_name    varchar(10),  
          user_sex  varchar(10)  
      ) 
    declare  @tb2  table  
      (  
          User_name    varchar(10),  
          user_sex  varchar(10)  
      )    
      insert  @tb  
      select  'name1','男'  union  
      select  'name2','女'  union  
      select  'name3','男'  union  
      select  'name4','女'  insert  @tb2  
      select  'name1','李路'  union 
        select  'name1','李路2'  union 
      
      select  'name2','张三'  union  
      select  'name3','李四'  union  
      select  'name4','王五'  select  a.User_name,a.user_sex,b.s
      from  @tb a  inner join (select User_name,max(user_sex) as s from @tb2 group by User_name)b on a.User_name=b.User_name 
      

  3.   


    --name1 男 李路2
    --name2 女 张三
    --name3 男 李四
    --name4 女 王五
      

  4.   


      --楼主的要求
      SELECT T.[USER_NAME],T.USER_SEX,MIN(T2.USER_SEX) AS USER_SEX 
      FROM @TB T, @TB2 T2
      WHERE T.[USER_NAME] = T2.[USER_NAME] 
      GROUP BY T.[USER_NAME],T.USER_SEX    /* 结果 
    name1     男 李路
    name2     女 张三
    name3     男 李四
    name4     女 王五
    */
      

  5.   

    支持 用 min 比较巧
      

  6.   

    LZ的语句只需小小改动即可(将表@tb2改为子查询就行了), 如下select abc.User_name,abc.user_sex,tt.user_sex 
    from @tb abc  
    inner join
    (select User_Name, min(User_Sex) as User_Sex
    from @tb2
    group by User_Name
    ) as tt 
    on abc.User_name = tt.User_name 
    -- 返回结果集User_name  user_sex   user_sex   
    ---------- ---------- ---------- 
    name1      男          李路
    name2      女          张三
    name3      男          李四
    name4      女          王五
      

  7.   

    select  abc.User_name,abc.user_sex,tt.user_sex 
      from  @tb abc  inner join (SELECT [User_name],min(user_sex) user_sex from @tb2 group by [User_name])tt 
    on abc.User_name=tt.User_name 
      

  8.   

    User_name  user_sex   user_sex
    ---------- ---------- ----------
    name1      男          李路
    name2      女          张三
    name3      男          李四
    name4      女          王五
      

  9.   

    不知道樓主是不是要這種結果:
    select  abc.User_name,abc.user_sex,min(tt.user_sex) as user_sex
      from  @tb abc  inner join @tb2 tt on abc.User_name=tt.User_name GROUP BY abc.User_name,abc.user_sex
    結果:
    User_name    user_sex          user_sex
    name1        男           李路
    name2        女           张三
    name3        男           李四
    name4        女           王五