工作中遇到了主表关联拓展表的字段,查询后在表单上将一个userId关联到的多条拓展表数据合并为一行展示的场景,在这里记录一下解决方法。 1.PGsql的方法 业务场景:存在3个表(人员表,人员属性关联
工作中遇到了主表关联拓展表的字段,查询后在表单上将一个userId关联到的多条拓展表数据合并为一行展示的场景,在这里记录一下解决方法。
业务场景:存在3个表(人员表,人员属性关联表,属性字段拓展表),一个人员可以有多个属性,需要在列表上将人员的信息和属性类型展示在一行,如图2。
图1
图2
这里由于涉及分页展示,所以人员表不便于和人员属性关联表直接left join,但是这里可以先把人员id相同的关联表数据合并为一条,然后将这些合并后的数据作为临时表和人员表left join
这样就避免了分页时条数会因为在内存中合并同userId的数据行而减少的问题,合并中间表的数据作为临时表的SQL大致如下。
select id,string_agg(type,',') from relation group by id;
参考博客:
string_agg函数
mysql中没有string_agg聚合函数,但是可以使用group_concat解决这个问题。
创建demo表
添加演示数据
示例SQL
SELECT id,GROUP_CONCAT(description) as des from user_demo GROUP BY id
结果
参考博客:
来源地址:https://blog.csdn.net/qq_41659869/article/details/127620396
--结束END--
本文标题: 一对多时,如何将userId相同的多条关联表数据合并为一条
本文链接: https://www.lsjlt.com/news/396590.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-05-15
2024-05-15
2024-05-15
2024-05-15
2024-05-15
2024-05-15
2024-05-15
2024-05-15
2024-05-14
2024-05-14
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0