SQL列转行

SQL列转行就是获取数据表中的某一列数据整合成一条记录
函数名称:GROUP_CONCAT

用法:select GROUP_CONCAT(userid SEPARATOR ”) FROM detail

assis_userid为要获取的列名,separator为分隔符,在引号里面可以设置以什么分隔,默认以 ,逗号分隔。

举例:
1、默认分割符
SQL:

SELECT GROUP_CONCAT(userid) FROM detail

结果:1,2,3,4,5,6,7

2、指定分隔符
SQL:

SELECT GROUP_CONCAT(`userid` SEPARATOR '|') FROM detail

结果:1|2|3|4|5|6|7

3、去除分隔符
SQL:

SELECT GROUP_CONCAT(`userid` SEPARATOR '') FROM detail

结果:1234567

mybatis中使用:

<update id="updateAssisUseridById" parameterType="java.lang.String">
    update ldp_analy_doubt_par 
    set assis_userid = (
        select GROUP_CONCAT(userid separator '') assis_userid 
        from ldp_analy_doubt_chd
        where par_id = #{id}
        group by par_id
    )
    where id = #{id}
  </update>

把ldp_analy_doubt_chd表中的符合条件的userid列合并更新到ldp_analy_doubt_par 表的assis_userid 字段中。

另外一种方式就是最普通的方法,先从ldp_analy_doubt_chd表把userid列 查询出来,然后后台遍历拼接,再更新到ldp_analy_doubt_par 表,此处遍历就不贴代码了。

注意:使用此GROUP_CONCAT方法,针对少量的数据可以转化成果,如果是大批量的数据进行转化,亲测不好使,和某些配置有关。如果哪位大牛知道解决方法,请留言告知,感谢!

由于遇到大批量记录列转行,暂时没找到更好的方法,暂时采用代码解决方法。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值