有两个表:主表user 从表info
User数据id     
1      
2      info表数据id     name
1      nick
1      kevin
1      brain
2      westlife
2      nsyncuser表的id和info表的id是主外键关系
现在我想要这样的查询结果id   name
1    nick,kevin,brain
2    westlife,nsync就是把id相同的的name累加起来,并用逗号隔开
麻烦各位高手了谢谢!!!!!!!!!

解决方案 »

  1.   


    select u.ID,(stuff((select ','+[name] from Info where ID=u.ID),1,1'')) as [name] 
    from [user] u 
      

  2.   

    select id,name=STUFF((select ','+name
                          from info
                          where name=a.name for xml path('')))
    from info a
    group by id
      

  3.   

    晕,没写完就发上来了
    select id,name=STUFF((select ','+name
                          from info
                          where name=a.name for xml path('')),1,1,'')
    from info a
    group by id
      

  4.   

    一条我是做不到了,多条还是可以的
    select * into #temp from info order by id,namedeclare @id int,@name varchar(2000)
    select @id=0,@name=''update #temp set @name=name=case when @id=id then @name+','+name else name end,@id=idselect id,max(@name) as name from #temp group by id
      

  5.   


    select u.ID,(stuff((select ','+[name] from Info where ID=u.ID for xml path('')),1,1,'')) as [name] 
    from [user] u