SqlServer 如何将查询出的多行数据拼成一个字符串返回

我们在查询或做报表时,会遇到这样的情况,一个主表table_main,一个字表table_sub

查询时需要显示主表的字段,然后把子表的内容拼成一个字符串与主表一起显示

例如:

table_main
main_idmain_name
1张三
2李四

table_sub
main_idsub_hobby
1唱歌
1跳舞
2足球
2篮球
2羽毛球

我们可以执行下面的语句得到预期效果,如下:

SELECT main_id,main_name,
main_hobby=STUFF((SELECT ','+sub_hobby FROM 
table_sub WHERE main_id=t.main_id FOR XML PATH('')),1,1,'')
FROM table_main t
GROUP BY main_id,main_name

 1张三唱歌,跳舞
 2李四足球,篮球,羽毛球


分析:

stuff(select ',' + fieldname  from tablename for xml path('')),1,1,'')
这句话的作用便是将多行fieldname字段的内容拼成字符串,并用逗号隔开。
for xml path是SQL Server 2005以后版本支持的将查询内容拼成XML的方法。
stuff函数的作用是去掉字符串最前面的一个逗号。


  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值