如何用SQL语句,将搜索的多行记录变为一行记录??列如:table Userid UserID BoardID
1 test1 1
1 test1 3
1 test1 5
2 test2 1我现在需要搜索出UserID=test1所管理的所有BoardID
得到的结果,我不需要多行,只需要一行.
形式为:
id UserID ManageBoardID
1 test1 1,3,5 (就是把所有的管理ID用逗号分隔)不知道有什么方法可以实现??
1 test1 1
1 test1 3
1 test1 5
2 test2 1我现在需要搜索出UserID=test1所管理的所有BoardID
得到的结果,我不需要多行,只需要一行.
形式为:
id UserID ManageBoardID
1 test1 1,3,5 (就是把所有的管理ID用逗号分隔)不知道有什么方法可以实现??
dim str as string
for i=0 to dataview1.count-1
str &=dataview1.item(i).row("BoardID") &","
next
最后str就是你想要的值了.
string str="";
if (dt.Rows.Count>0)
{
for (int i=0;i<dt.Rows.Count;i++)
{
str+="'"+dt.Rows[i]["id"].Tostring()+"',";
}
}
str 就是1,2,3,这种形式,如果要用 select ...in(str)这种形式
还需要加上str.SubString(0,str.Length-1);
(ufn_GetBoardID() 是你定义的函数)不过函数中要使用游标,效率低,建议你还是读出来然后在前台做吧
CREATE function dbo.fn_11(@var_id int)
returns varchar(100)
as
begin
declare @var varchar(100)
set @var=''
select @var=@var+cast(BoardID as varchar(10))+',' from [user] where id=@var_id
if len(@var)>0
set @var=left(@var,len(@var)-1)
else
set @var=' '
return(@var)
end select distinct id,UserID,dbo.fn_11(id) from [user]
--结果
1 test1 1,3,5
2 test2 1
你的方法很棒..谢谢你.