首页 新闻 搜索 专区 学院

mssql 两表之间更新 一对多问题

0
悬赏园豆:50 [已解决问题] 解决于 2020-10-31 14:29


有这样两个表 a表和b表,两个表根据id列可以匹配。a表的ID是主键,一个a表id可以匹配b表多条记录。现在想把b表里面的bak1更新到a表的bak4,当id一对多的情况,怎么把b表的值更新到a表,中间用逗号隔开。
求教各位大神

im1coder的主页 im1coder | 初学一级 | 园豆:26
提问于:2020-10-30 16:14
< >
分享
最佳答案
0

b表先根据a表的主键进行列转行,然后那这列转行的数据根据关联Id进行update的更新就可以了

收获园豆:30
但乱红尘 | 菜鸟二级 |园豆:414 | 2020-10-30 16:45

谢谢 可以了

im1coder | 园豆:26 (初学一级) | 2020-10-31 08:30
其他回答(1)
1

b表先进行分组,然后将分组后的结果跟a表关联

sql2017以上可以使用string_agg函数

update a set a.bak4=t.bak
from a 
join
(
   select b.id,string_agg(b.bak1, ', ') as bak
   from a join b on a.id=b.id
   group by b.id
) t
on a.id=t.id

https://stackoverflow.com/questions/273238/how-to-use-group-by-to-concatenate-strings-in-sql-server

收获园豆:20
E行者 | 园豆:1289 (小虾三级) | 2020-10-30 17:22

服务器是2008的,不过还是感谢你!

支持(0) 反对(0) im1coder | 园豆:26 (初学一级) | 2020-10-31 08:31
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册