当前位置: 代码迷 >> Sql Server >> 看看这条语句如何写
  详细解决方案

看看这条语句如何写

热度:177   发布时间:2016-04-27 19:26:30.0
看看这条语句怎么写,在线等
表 AB 字段 id aa
  1 aaaa
  2 bbbb
  3 cccc
其中AB表中有很多记录,我想随机取出5条,并把字段aa组合成一个以‘,’分隔的长字符串,更新到另一表中,不知道怎样写好

create proc xxxxxxx
 as
 begin
  declare @bbb varchar(200)
  [email protected] 例如:aaaa,bbbb,cccc,(这部分怎么写?)
  update ab2 set aa = @bbb where ....
 end

------解决方案--------------------
create proc xxxxxxx 
 as 
 begin 
declare @bbb varchar(200) 
select @bbb=isnull(@bbb+',','')+ aa from (select top 5 bb from ab order by newid()) bb
update ab2 set aa = @bbb where .... 
 end
------解决方案--------------------
declare @linkSTR varchar(200)
select top 5 @linkSTR=isnull(@linkSTR,'') + ',' + aa from ab order by newid()
update ab2 set aa=stuff(@linkSTR,1,1,'') where ...
------解决方案--------------------
SQL code
declare @sql varchar(1000)select @sql=isnull(@sql+',','')+aa from (select top 5 * from ab order by newid())aupdate ab2 set [email protected] where ......
------解决方案--------------------
declare @str varchar(200)
select @str = isnull(@str+',','')+aa from (select top 5 * from AB) bb
print @str
这样就可以查出你要的数据了
------解决方案--------------------
SQL code
    declare @s nvarchar(1000)    select @s=isnull(@s+',','')+quotename(Name) from (select top 5 Name from 表名 order by newiD())t    update 表名 set [email protected] where .......
------解决方案--------------------
SQL code
--环境create table tb(id int identity(1,1),[name] char(10))insert into tb select 'a'insert into tb select 'b'insert into tb select 'c'insert into tb select 'd'insert into tb select 'e'insert into tb select 'f'gocreate table ttb(id int identity(1,1),[name] char(100))select * from ttbdelete from ttbgo--存储过程create proc GetTop  as  begin   declare @Row int  set @Row=0  while @Row < 5  begin   declare @sql nvarchar(200)  set @sql=''  select @[email protected]+[name] from (select top 5 * from tb order by newid()) t  insert ttb select name = @sql  set @[email protected]+1  endend--删除环境drop table ttbgodrop table tbgodrop proc GetTop
------解决方案--------------------
create table tb(id varchar(10),username varchar(10))
insert into tb values('1', '123')
insert into tb values('2', '234')
insert into tb values('3', 'hell')
go

declare @a varchar(5000),@b varchar(5000)
select @a='',@b=''
select @[email protected]+','+rtrim(id),@[email protected]+','+username from tb
select 'id',stuff(@a,1,1,'') union select 'username',stuff(@b,1,1,'') 


drop table tb

/*
-------- --------------
id 1,2,3
username 123,234,hell

(所影响的行数为 2 行)
*/
  相关解决方案