今天一个同事问我说能不能把sql查询结果的一列userid用逗号分割,串到一起,这样查询出来的结果就可以直接用了

于是我就去查了一下怎么实现。

--你要查询的结果,给它加序号
select row_number() over ( order by mbid desc ) as rownum, mbid 
into #a from sx_mb_info
--循环赋值
declare @i int,@j int,@result varchar(5000) 
set @i=1
select @j= max(rownum)from #a
set @result=''
while @i<@j+1
begin
    select @result=@result+ mbid+','  from #a where rownum=@i
    set @i=@i+1;
end
select @result
drop table #a

如下,当时碰到的问题是

如果给变量赋查询结果的值,一直不行。

最后查了一下才知道原来这么SQL给变量赋值的方法有两种(目前我就知道这两种)

一种是直接set @i='啦啦啦'

另一种是用select

在正常的select语句中加上变量

如下面 

select @j= max(rownum)from #a