如何把查询到的多行数据合并为一行?

Chice_wxg 2004-11-07 01:27:22
我需要类似以下功能:

update table1 set data=(select line from table2)

但是select如果返回多行显然无法直接进行这种操作,

请问如何解决?谢谢~~~~~~~~~
...全文
235 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
lzymagi 2004-11-07
  • 打赏
  • 举报
回复
(select line from table2)是个结果集.当然不能赋值了
铁歌 2004-11-07
  • 打赏
  • 举报
回复
为什么不把'='改成'in'呢?
lovvver 2004-11-07
  • 打赏
  • 举报
回复
返回多条结果集,肯定是会出错的。
你可以采用两个表连接的方式,来实现你的要求。
可以写出你的具体问题来~~
Chice_wxg 2004-11-07
  • 打赏
  • 举报
回复


哦,我试试,谢谢先~~~~~~~


Chice_wxg 2004-11-07
  • 打赏
  • 举报
回复
无法解决吗?
zjcxc 元老 2004-11-07
  • 打赏
  • 举报
回复
--或者写个自定义函数
create function f_str()returns varchar(8000)
as
begin
declare @s varchar(8000)
set @s=''
select @s=@s+' '+line from table2
return(stuff(@s,1,1,''))
end
go

--调用函数实现更新
update table1 set data=dbo.f_str() where id=指定记录
zjcxc 元老 2004-11-07
  • 打赏
  • 举报
回复
--这样的更新无法用一个语句实现

--你可以这样处理
declare @s varchar(8000)
set @s=''
select @s=@s+' '+line from table2
update table1 set data=stuff(@s,1,1,'') where id=指定记录
Chice_wxg 2004-11-07
  • 打赏
  • 举报
回复
data 和 line都是字符传。

比如:
table2中有很多记录(line)
id line
1 asdf
2 zxcv
3 lkjha

我希望最终例如:
update table1 where id=指定记录 set data=( .....不知道怎么写....)
最终:
table1中那条记录的data 字段的内容是类似"asdf zxcv lkjha"的形式。

也就是说要把table2 中的所有内容放到一个字符串中。
victorycyz 2004-11-07
  • 打赏
  • 举报
回复
你想怎样合并?table2.line和table1.data的字段类型是什么?
solidpanther 2004-11-07
  • 打赏
  • 举报
回复
update table1 set data=(select top 1 line from table2)
或者
update table1 set data=t2.line
from table1 t1,table2 t2 where t1.???=t2.??? ........

34,588

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧