SQL server把多条记录查找结果合并成一条记录
例如我们有如下一张"用户工厂"表,为多对多关系:
select UserId,工厂号 from 用户工厂
如果我们希望得到三个工厂号对应了哪些UserId,把这些UserId放到一行里面显示出来,如下图:
可以使用如下sql语句:
select distinct 工厂号,人员=(
select CONVERT(nvarchar(10),UserId)+',' from 用户工厂 b where a.工厂号=b.工厂号 for xml Path('')
)
from 用户工厂 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 Server
, 程序员高级
标签:
合并记录
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
2019-10-18 C#中的ref和out与SQL中的output