SQL server把多条记录查找结果合并成一条记录
- http://blog.gufang.org/
- 2025/12/19 4:32:24
- 来源:Gufang's Private Space
- 点击:
例如我们有如下一张"用户工厂"表,为多对多关系:
select UserId,工厂号 from 用户工厂

如果我们希望得到三个工厂号对应了哪些UserId,把这些UserId放到一行里面显示出来,如下图:

可以使用如下sql语句:
工厂号,人员( ((),UserId) 用户工厂 b a.工厂号b.工厂号 xml Path() ) 用户工厂 a
注意:上面这段sql语句直接复制到SQL中运行可能会报错,需要去掉所有空格和换行再运行即可,如下:
select distinct 工厂号,人员=(select CONVERT(nvarchar(10),UserId)+',' from 用户工厂 b where a.工厂号=b.工厂号 for xml Path('')) from 用户工厂 a
再通过多表联合查询得到工厂号对应的人员名字,如下:
select distinct 工厂号,人员=( select UserName+',' from 用户工厂 b inner join 用户信息表 s on s.UserId=b.UserId where a.工厂号=b.工厂号 for xml Path('')
)
from 用户工厂 a
- 上一篇:没有啦
- 下一篇:SQL提高查询效率【in、not in、betwe
发表评论(0)











