快捷搜索: 王者荣耀 脱发

Oracle函数listagg的作用

目的:实现数据压缩

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 表关联的数据
经验分享 程序员 微信小程序 职场和发展