sql server 如何实现实现类似mysql中group_concat功能?

lazydot 2006-04-26 09:47:56
表a:
id name
a aa
b bb
c cc
. .
. .
表b:
id name a_id
1 11 a
2 22 a
3 33 b
4 44 c
5 55 a
. . .
现在要求是查询表a中的前15条记录信息,并且查询b中这15个记录中每个记录的前5条子记录信息
mysql中可以通过group_concat函数只需要一次查询就可以实现,查询的结果如下:
a_id a_name b_ids b_names
'a' 'aa' '1$2$5' '11$22$55'
'b' 'bb' '3' '33'
'c' 'cc' '4' '44'
其中'$'是group_concat函数的分隔符参数。
sqlserver中怎么实现?或者类似的实现而最少次的查询

...全文
803 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
lazydot 2006-05-05
  • 打赏
  • 举报
回复
有没有不用函数的方法而实现以上功能呢?
高手指点,谢谢了!
lazydot 2006-04-29
  • 打赏
  • 举报
回复
非常感谢楼上!
这两天在外面,回去再试。
子陌红尘 2006-04-27
  • 打赏
  • 举报
回复
用户定义函数:
------------------------------------------------------------------------------
create function f_str(
@id int, --a表的id
type int) --类型:1、返回b表id的汇总;2、返回b表name的汇总
returns varchar(200)
as
begin
declare @ret varchar(200)
set @ret=''
select top 5 @ret=@ret+'$'+case type when 1 then rtrim(id) when 2 then rtrim(name) end
from b where a_id=@id
set @ret=stuff(@ret,1,1,'')
return @ret
end
go


select
id as a_id,
name as a_name,
dbo.f_str(id,1) as b_id,
dbo.f_str(id,2) as b_name
from
a
allfuly 2006-04-26
  • 打赏
  • 举报
回复
select top 15 a.id,a.name,b.id,b.name from a,b where a.id=b.a_id

27,580

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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