精华内容
下载资源
问答
  • mysql多列合并为一列
    2020-08-12 09:42:58

    思路:将两列日期先格式化成以yyyy-MM-dd格式,再将两列合并成一列,并且以逗号分隔开,再根据逗号将一列中的一行分割成多行,再分组去重

    CREATE TABLE `t_product` (
      `id` varchar(225) NOT NULL,
      `start_time` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
      `end_time` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
    -- ----------------------------
    -- Records of t_product
    -- ----------------------------
    INSERT INTO `t_product` VALUES ('1', '2020-08-11 19:20:31', '2020-08-11 22:20:36');
    INSERT INTO `t_product` VALUES ('2', '2020-08-12 19:09:09', '2020-08-12 22:20:36');
    INSERT INTO `t_product` VALUES ('3', '2020-08-13 19:09:14', '2020-08-13 22:20:36');
    INSERT INTO `t_product` VALUES ('4', '2020-08-11 19:06:59', '2020-08-14 22:20:36');
    
    
    
    SELECT * FROM (
    	SELECT 	substring_index(
    		substring_index(
    			all_date,
    			',',
    			b.help_topic_id + 1
    		),
    		',' ,- 1
    	) AS all_date_group FROM (
    		select concat(DATE_FORMAT(p.start_time,'%Y-%m-%d'), ',', DATE_FORMAT(p.end_time,'%Y-%m-%d')) as all_date FROM t_product p
    	) pp JOIN mysql.help_topic b ON b.help_topic_id < (
    		length(all_date) - length(
    			REPLACE (all_date, ',', '')
    		) + 1
    	)
    ) ss GROUP BY ss.all_date_group
    
    更多相关内容
  • 场景如下,mysql根据用户u_id查询课程,不过该用户的课程为多列数据table userstablecurriculums查询语句select * from users as u join curriculums as c on c.u_id = u.u_id where c.u_id = 1result发现结果是多列...

    场景如下,mysql根据用户u_id查询课程,不过该用户的课程为多列数据

    table users

    891c64fc508cd21b7e781524e9a92825.png

    table curriculums

    4c6578245663b620c803babbcaca4e40.png

    查询语句select * from users as u join curriculums as c on c.u_id = u.u_id where c.u_id = 1

    result

    8b29eaf8418da9b14696476b481acb4b.png

    发现结果是多列数据,需求为一条数据返回,得到sql函数方法 CONCAT() 和 GROUP_CANCAT()

    select u.u_id,u.nickename,CONCAT("[",GROUP_CONCAT('{"curr":"',c.c_name,'","price":',c.price,',"info":"',c.info,'"}'),"]") asdatasfrom users asujoin curriculums as c on c.u_id =u.u_idwhere c.c_name like '%o%' group by u.u_id

    result

    e69e13de05a8cbdd5b0d4136a4799546.png

    CONCAT() 和 GROUP_CANCAT() 都是把结果拼接为一条字符串,上面的例子演示为拼接为json字符串

    81141718315971fbc9dceff8a78c7dc9.png

    如果业务需求减少查询次数并一次查询多个用户的多个数据

    golang的gorm框架操作可以制作以下结构体scan为数据

    type users struct {

    Uid int `gorm:"column:u_id" json:"uid"`

    ......

    }

    type curriculums struct {

    Cid int `gorm:"column:c_id" json:"cid"`

    Cname string `gorm:"column:c_name" json:"title"`

    Uid int `gorm:"column:u_id" json:"uid"`

    Price float64 `gorm:"column:price" json:"price"`

    }

    type result struct {

    users

    Datas string `gorm:"column:datas" json:"datas,omitempty"` # gorm:"column:datas" 为CONCAT() or GROUP_CANCAT() as 之后的名称

    # 需要对其中数据进行操作才用json反序列化操作Datas列数据为curriculums结构体,sql查询时没有对其操作

    Cu curriculums `json:"curriculums"`

    }

    var datas []result

    db.Raw("sql语句 ... CONCAT() ...").Scan(&datas)

    将数据scan到结构体中,其中result.Datas 含有的数据为这次在mysql中拼接的字符串,可以对其进行json反序列化操作

    8b1f53f658c9b424f092c486d7f19bf8.png

    但是返回数据为json格式字符串了,如果无需其他操作可直接由一些框架返回 datas 切片结构体数据

    其中注意点为:

    1.查询用户id为1,其中该列数据admin_del为null,得到结果CONCAT 和 GROUP_CANCAT 拼接都会返回 空字符串

    ee6e388c360b151e4cc4bac18b337c25.png

    2.GROUP_CANCAT() 函数中可以进行另外的查询

    0a1c45ae0a407f60037125aa66bef2e9.png

    3.CONCAT和GROUP_CANCAT应用场景不同

    例如一个用户的多个课程查询,如果使用 CONCAT 与一般查询一般,返回的数据为多列

    e1bf0cce2a4ed9af9874d84d1f566512.png

    而GROUP_CANCAT则不同,会将多个列的结果拼接为一个字符串,而不是像join users 返回多列数据

    3ec1b1ea6e3e1278dd1b7cfc54495f5c.png

    上面的成功例子则内部使用GROUP_CANCAT先对多个数据列拼接,外部使用 [] 拼接为json格式

    4.updata 中也能使用

    update curriculums set info = CONCAT(c_name,"----") where c_id = 184

    -----------------------------------------------------------分割线-------------------------------------------------------------------

    本笔记自用 而已,如有错误请指正!

    展开全文
  • mysql数据库中如何把多列数据合并成一列? mysql数据库中如何把多列数据合并成一列? mysql数据库中如何把多列数据合并成一列?
  • 个用户对应个或个角色,但是user表和role表没有直接对应,对应关系在第三张表中 需求 查询user表中用户信息,并加上用户对应的所有角色名 sql语句 select a.*,GROUP_CONCAT(role_name) as role_name from t_...

    表结构

    t_user表
    在这里插入图片描述
    t_user_role表
    在这里插入图片描述
    t_role表
    在这里插入图片描述

    分析

    一个用户对应一个或多个角色,但是user表和role表没有直接对应,对应关系在第三张表中

    需求

    查询user表中用户信息,并加上用户对应的所有角色名

    sql语句

    select a.*,GROUP_CONCAT(role_name) as role_name from t_user a
            LEFT JOIN t_user_role b ON a.id = b.user_id
            left JOIN t_role c ON b.role_id = c.id
            GROUP BY a.id
    

    运行结果如下
    在这里插入图片描述
    最后结果集中的role_name为字符串,返回后可以在前端用字符串分割的方法使用。

    解析

    GROUP_CONCAT函数可以实现将多列合成一列中,并且可以指定分隔符
    后面则使用左查询和分组查询将三张表数据合在一起

    展开全文
  • 多行多列合并排序:实现逻辑 ,先合并列,并排序,然后合并所有行。 group_concat()函数 就是为了将查询到的所有行的字段拼接起来。【多行合并时使用到】 语法也简单易懂:group_concat(str1, str2,...) 【语法...

    项目需要合并列,想用Mybatis查出来,Java遍历整合。想了想太耗时,不如一条sql来的痛快。

    多行多列合并排序:实现逻辑 ,先合并列,并排序,然后合并所有行。

    group_concat()函数  就是为了将查询到的所有行的字段拼接起来【多行合并时使用到】

    语法也简单易懂:group_concat(str1, str2,...) 

    【语法和功能需要拿小本本记下来】

    使用手册:

    原始数据:

    select sortId,datas from bs_product_data

    使用了GROUP_CONCAT()后:

    --group by按照什么东西排序,这是GROUP_CONCAT里的排序方法 行转列
    select GROUP_CONCAT(sortId,datas) datas from bs_product_data group  by sortId

    多行合并成一列后,所有列合并,继续使用GROUP_CONCAT():

    --GROUP_CONCAT 不加group  by 将所有要整合的列合并
    select GROUP_CONCAT(datas) datas from (
    select GROUP_CONCAT(sortId,":",datas) datas from bs_product_data group  by sortId
    ) product

    多行多列转换完成。【GROUP_CONCAT里面可以增加分隔符】

    展开全文
  • SELECT GROUP_CONCAT(relation_rms_name) FROM t_order_status AS B WHERE B.id = '011WBSWEB20180403111205582'
  • Mysql多列数据合并行 函数Group_concat的用法 例: 原始数据:个 channel_id 对应多个 category_id 处理后数据:每个 channe_id 对应的 category_id 对应处理数据的sql: SELECT channel_id,GROUP_CONCAT...
  • 数据库结构如图:而我想让同一个人的不同成绩变成此人在这一行不同列上显示出来,此时分为2中展现:第一种展现如图----【多行变一列】(合并后的数据在同一列上):sql如下:select name ,group_concat(sore Separator...
  • mysql中有种可以通过join相关操作进行表与表之间的方式查询不同结果集,但是在的情况下,关键查询的结果是条的.例如:班级和学习的关系,我想很直观的看到班级和学生的情况,列表显示出班级的信息和班级的男生...
  • mysql多行多列合并为一行一列

    万次阅读 2012-06-19 18:15:56
    mysql> select * from aa; +------+------+ | id| name | +------+------+ |1 | 10| |1 | 20| |1 | 20| |2 | 20| |3 | 200 | |3 | 500 | +------+------+ 6 rows in set (0.00 sec) 以id分组,...
  • :sql语句SELECT declare_type_id,support_model,project_name,CONCAT(declare_type_id,support_model,project_name) from gf_index;二:结果
  • MySQL多列合并一列,多行合并一行

    千次阅读 2019-01-02 19:33:30
    原本的sql语句: SELECT creater_user_id,file_name FROM t_report WHERE ...两行合并一行(中间用 '_'连接),sql如下: SELECT CONCAT(creater_user_id,'_',file_name) FROM t_report WH...
  • CONCAT合并多条数据显示的方法mysql利用group_concat()合并多行数据到mysql如何实现多行查询结果合并行关于mysql合并表的详细介绍mysql合并两个字段的方法分享mysql合并多条记录的单个字段去条记录编辑...
  • mysql行转(将同一下的不同内容的几行数据,转换成几列显示)、转行、行列汇总、合并显示
  • 2、Mysql特有函数:GROUP_CONCAT 示例: CREATE DEFINER=`root`@`localhost` PROCEDURE `SP_Roster_SELECT_BY_ID`( IN pPK_RosterID bigint ) BEGIN SELECT TS_Roster.*, GROUP_CONCAT(F_GroupName SEPARATOR'\n') ...
  • MySQL合并多列数据之CONCAT函数和CONCAT_WS函数.函数描述二、创建表和添加测试数1、创建表2、添加测试数据3、表图三、编写测试SQL语句1、函数concat()2、函数CONCAT_WS() .函数描述 菜鸟教程中的函数描述:...
  • Mysql来帮忙:多行合并成一

    千次阅读 2022-03-31 09:33:20
    如果使用group by发现每个只能显示条。 那么怎么办? 接下来就是解决现场。 解决 解决思路 1、把符合条件的id串在一起组合成一个新的 2、从里面截取3个子项 整体SQL 先直接上方案-SQL: SELECT pid,...
  • MySql 将查询结果多列合并行GROUP_CONCAT GROUP_CONCAT(expr) 该函数返回带有来自个组的连接的非NULL值的字符串结果。其完整的语法如下所示: GROUP_CONCAT([DISTINCT] expr [,expr ...] [ORDER ...
  • 我正在MYSQL工作,需要将用户数据提取到个视图中.我将使用电子邮件客户端中的数据,因此我无法在应用程序层中执行此操作.问题是用户的每个数据字段都包含在单独的行中(这是Wordpress如何设置数据结构).例如,wp_user...
  • 利用函数:group_concat(),实现个ID对应个名称时,原本多行数据,把名称合并
  • 文章出处:mysql多行多列合并为一行一列 mysql> select * from aa; +------+------+ | id| name | +------+------+ |1 | 10| |1 | 20| |1 | 20| |2 | 20| |3 | 200 | |3 | 500 | +------+------+ ...
  • 本篇文章是对Mysql中的列索引和多列索引进行了详细的分析介绍,需要的朋友参考下
  • 各位,我的数据库中有些数据需要整理,如图所示是例子, ![图片说明]... 如何将这三个除了标签不一样的数据,合并为一个数据,相同数据保留,标签变成top250,文学,爱情
  • 数据表:转行:利用max(case when then)max---聚合函数 取最大值(case course when '语文' then score else 0 end) ---判断as 语文---别名作为列名SELECT`name`,MAX(CASEWHEN course='语文' THENscoreEND) AS 语文...
  • Mysql 多列形成主键(复合主键 )

    千次阅读 2021-03-03 19:45:57
    什么是数据表的复合主键所谓的复合主键 就是指你表的主键含有个以上的字段组成比如create table test(name varchar(19),id number,value varchar(10),primary key (name,id))上面的name和id字段组合起来就是你test...
  • MYSQL 条记录合并为一

    千次阅读 2021-06-10 11:52:17
    使用**GROUP_CONCAT(字段 分隔符)**函数 示例如下: SELECT GROUP_CONCAT(col_name SEPARATOR '、') as serialNumber FROM table
  • Mysql 合并一列的值(将某列的值串联起来) 有时我们需要将某列的值合并起来,那么我们可以怎么来实现呢? 可以用 group_concat() 函数来实现 例子: 若想简单深入了解一下 group_concat() 函数,可继续查看 ...
  • mysql多合并为一张表

    千次阅读 2021-01-18 18:17:25
    有很重复数据,需要对某一列进行去重。数据量太大的话,可以看我另外一篇:http://www.cnblogs.com/magmell/p/8941338.htmlmysql:思路:1、导出数据。select into outfile。2、传输到要导入数据的服务器上。3、...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 80,477
精华内容 32,190
关键字:

mysql多列合并为一列

mysql 订阅