目的:实现数据压缩
listagg可以实现将多列记录聚合为一列
listagg(measure_expr,delimiter) within group ( order by 字段) 你的别名;
用法介绍:measure_expr可以是基于任何列的表达式
delimiter分隔符,默认为NULL,通常用 ,
--mybatis编写SQL
select b1.id Id ,
b1.name Name,
listagg(b2.name , ',') within group (order by b1.id desc) Detail
from bs_left_name_table b1
left join bs_right_name_table b2 on b1.id = b2.id
where 1=1
<if test="Name != null and Name !='' ">
and b1.name = #{Name,jdbcType=VARCHAR}
</if>
group by b1.id , b1.name
order by b1.id desc
--以上一共显示三列分别是 ID , name , Detail ,第三列就是合并列,根据,合并
PS:
left join 会把左表没有关联的数据都显示出来,比如
bs_left_name_table 共有10条数据,bs_right_name_table 共有6条数据,其中5条是可以关联上的
用left join后最终会出现10条数据,其中5条是bs_right_name_table 表关联的数据
效果图,有多个,拼接