首页 > 数据库 >MySQL函数-Group_Concat分组并行转列

MySQL函数-Group_Concat分组并行转列

时间:2022-11-04 17:22:14浏览次数:42  
标签:group 转列 collections MySQL 字符串 Group null id concat

group_concat函数解析:

1、concat()函数:

  功能:将多个字符串连接成一个字符串

  语法:concat(str1, str2)

  结果:连接参数str1,str2为一个字符串,如果有任何一个参数为null,则返回值为null

2、concat_ws()函数:

  功能:将多个字符串以指定分隔符形式连接成一个字符串,即concat with separator

  语法:concat_ws(separator, str1, str2)

  结果:str1/str2/str3,分隔符不能为null,如为null,返回结果也为null

3、group_concat()函数:

  功能:按照指定字段分组,将满足条件的行转列,可指定分隔符将所有满足条件的字符串连接成一个字符串,separator缺省时默认为","

  语法:

group_concat(Distinct 要连接的字段 Order BY 要排序的字段 asc/desc Separator ',')

  结果:通过distinct排除重复值;通过order by 对结果值进行排序;通过separator指定分隔符

现有需求:某一用户需同时拥有collections_id (a,b,c,d)才能拥有**权益

查询语句如下:

select T.uid,T.cid,T.update_time,U.hash
from 
	(select * from 
		(SELECT uid, group_concat(distinct collections_id order by collections_id) as cid,update_time
		FROM qydao.t_user_collections 
		where collections_id in (244,245,246,247) 
		and state in(0,1,2,3)
		group by uid
        order by update_time) as tuc 
	where tuc.cid = ('244,245,246,247')) as T
LEFT JOIN user_info U
ON T.uid = U.id;

注:当数据量太大,group_concat超出默认值1024后就会截断,查询出来的数据不全

解决方案:

1、查询当前mysql group_concat_max_len状态

show variables like 'group_concat_max_len';

2、在MySQL配置文件中添加配置:group_concat_max_len= -1(-1为最大值或根据实际需求设置长度),配置后重启MySQL服务

标签:group,转列,collections,MySQL,字符串,Group,null,id,concat
From: https://www.cnblogs.com/deeptester-vv/p/16858507.html

相关文章

  • Windows Server 2016部署MySQL 8.0 MGR
    环境介绍操作系统IP主机名MySQL版本WindowsServer2016192.168.1.91db18.0.31WindowsServer2016192.168.1.92db28.0.31WindowsServer2016192.......
  • MySQL---存储引擎
    存储引擎查看存储引擎设置DBMS默认存储引擎设置表的存储引擎创建表时指定存储引擎修改表时指定存储引擎存储引擎介绍......
  • MYSQL数据备份之mysqldump命令详解
    一、mysqldump简介mysqldump是MySQL自带的逻辑备份工具。它的备份原理是通过协议连接到MySQL数据库,将需要备份的数据查询出来,将查询出的数据转换成对应的insert语......
  • mysql 5 和 8 连接配置
    前言:mysql目前最常用的就是5和8两个版本,但连接配置有一些区别,以下列出两个模板备用mysql5连接配置spring:datasource:driver-class-name:com.mysql.jd......
  • 学习笔记-mysql
    mysqlmy.cnf配置文件port=3309socket=/usr/local/mysql/tmp/mysql.sock[mysqld]#服务器端配置!include/usr/local/mysql/etc/mysqld.......
  • MySQL
    MySQLMySQL基础篇MySQL概述数据库相关概念名称概念简称数据库存储数据的仓库,数据是有组织的进行存储DataBase(DB)数据库管理系统操纵和管理数据库的大......
  • Installing MySQL-8028 on CentOS 8.3
    一、InstallingMySQL-8028onCentOS8.31地址https://www.mysql.comhttps://downloads.mysql.com/archives/community2下载图片 二、下载&解压1wge......
  • mysql创建数据库经典题型
     【简答题】有一个XSKC数据库,数据库中包括两个表: 学生表Student由学号(Sno)、姓名(Sname)、性别(Ssex)、年龄(Sage)、所在院系(Sdept)五个属性组成,记为:Student(Sno,Sn......
  • 查看mysql中SQL的执行计划
    查看sql语句通过数据引擎优化后的执行计划--关键字EXPLAINEXTENDED--sql语句SELECT*FROMp_user_role_refLEFTJOINp_roleONp_role.role_id=p_user_role_ref.ro......
  • mysql中如何执行关联查询
    一、内连接1.1、SQL1.2、伪代码二、内连接2.1、SQL2.1、伪代码......