SQL列转行

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

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

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

举例:
一、默认分割符
SQL:mybatis

SELECT GROUP_CONCAT(userid) FROM detail

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

二、指定分隔符
SQL:函数

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

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

三、去除分隔符
SQL:code

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

结果:1234567xml

mybatis中使用:string

<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方法,针对少许的数据能够转化成果,若是是大批量的数据进行转化,亲测很差使,和某些配置有关。若是哪位大牛知道解决方法,请留言告知,感谢!

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