使用SQL将多行记录合并成一行实例代码

目录
  • 前言
  • 1、数据处理前
  • 2,结果数据展示
  • 3,hive处理方式
  • 4,MySQL处理方式
  • 总结

前言

我们在数据开发的过程中,经常会遇到这样的需求,就是将多行合并为一行,并且用特定字符隔开。

1、数据处理前

2,结果数据展示

3,hive处理方式

在hive里面,用concat_ws函数处理

格式: concat_ws(‘分隔符’,collect_set/collect_list(字段))

参数释义:

  • concat_ws:多行合并一行函数
  • collect_set:合成数组,数据已去重
  • collect_list:合成数组, 数据未去重
SQL脚本:
select school,concat_ws(',',collect_set(name)) from student
group by school;

4,MySQL处理方式

GROUP_CONCAT(字段 分隔符)

注意:MySQL在GROUP_CONCAT函数中,去重需要使用distinct 关键字,如果需要先排序再合并,也可以使用order by 关键字。

select school,GROUP_CONCAT(name,',') from student
group by school;

补充:还有几种扩展

①可以给类别去重

SELECT group_id,GROUP_CONCAT(DISTINCT category) FROM `sqltest` GROUP BY group_id

②给类别排序

SELECT group_id,GROUP_CONCAT(category ORDER BY category DESC) FROM `sqltest` GROUP BY group_id

③给类别更改分隔符

SELECT group_id,GROUP_CONCAT(category SEPARATOR '_') FROM `sqltest` GROUP BY group_id

总结

到此这篇关于使用SQL将多行记录合并成一行的文章就介绍到这了,更多相关SQL多行记录合并一行内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • mysql如何将多行数据合并成一行

    select group_concat(list_name) from aa_list

  • mysql如何实现多行查询结果合并成一行

    利用函数:group_concat(),实现一个ID对应多个名称时,原本为多行数据,把名称合并成一行. 其完整语法: GROUP_CONCAT(expr) 该函数返回带有来自一个组的连接的非NULL值的字符串结果.其完整的语法如下所示: GROUP_CONCAT([DISTINCT] expr [,expr ...] [ORDER BY {unsigned_integer | col_name | expr} [ASC | DESC] [,col_name ...]] [SEPARATOR st

  • mysql利用group_concat()合并多行数据到一行

    假设两个表a,b,b中通过字段id与a表关联,a表与b表为一对多的关系.假设b表中存在一字段name,现需要查询a表中的记录,同时获取存储在b表中的name信息,按照常规查询,b表中有多少记录,则会显示多少行,如果需要只显示a表记录行数,则需要把查询name字段得到的多行记录进行合并,可以通过程序实现,但也可直接在sql层完成. 方法: 利用group_concat()方法,参数为需要合并的字段,合并的字段分隔符默认为逗号,可通过参数separator指定,该方法往往配合group by 一起使

  • 使用SQL将多行记录合并成一行实例代码

    目录 前言 1.数据处理前 2,结果数据展示 3,hive处理方式 4,MySQL处理方式 总结 前言 我们在数据开发的过程中,经常会遇到这样的需求,就是将多行合并为一行,并且用特定字符隔开. 1.数据处理前 2,结果数据展示 3,hive处理方式 在hive里面,用concat_ws函数处理 格式: concat_ws(‘分隔符’,collect_set/collect_list(字段)) 参数释义: concat_ws:多行合并一行函数 collect_set:合成数组,数据已去重 coll

  • Sql Server:多行合并成一行,并做分组统计的两个方法

    复制代码 代码如下: --创建 test 表 ,插入数据 CREATE TABLE test(code varchar(50), [values] varchar(10),[count] int)INSERT test SELECT '001', 'aa',1UNION ALL SELECT '001', 'bb',2UNION ALL SELECT '002', 'aaa',4UNION ALL SELECT '002', 'bbb',5UNION ALL SELECT '002', 'ccc

  • SQL Server将一列的多行内容拼接成一行的实现方法

    下面大家先看下示例代码: 示例 昨天遇到一个SQL Server的问题:需要写一个储存过程来处理几个表中的数据,最后问题出在我想将一个表的一个列的多行内容拼接成一行,比如表中有两列数据 : 类别 名称 AAA 企业1 AAA 企业2 AAA 企业3 BBB 企业4 BBB 企业5 我想把这个表变成如下格式: 类别 名称 AAA 企业1,企业2,企业3 BBB 企业4,企业5 一开始挺头疼的(会了的肯定没有这种感觉,不会那必须是头疼啊(*^__^*) ),从网上找了点资料,算是找到一种比较简单方便

  • Mybatis查询记录条数的实例代码

    这几天在学SSM框架,今天在SSM框架中根据某个条件查询MySQL数据库中的记录条数,碰到一些问题,记录一下 User.xml <select id="userNameValidate" parameterType="String" resultType="Integer"> select count(*) from user where username like #{value} </select> <selec

  • SQL 使用 VALUES 生成带数据的临时表实例代码详解

    VALUES 是 INSER 命令的子句. INSERT INOT 表名(列名1,列名2,-) VALUES(值1,值2,-) --语法: --SELECT * FROM ( --VALUES -- (1,2,3,......) -- ,(1,2,3,......) -- ,(1,2,3,......) -- ,(1,2,3,......) -- ,(1,2,3,......) -- ,(1,2,3,......) --) AS t(c1,c2,c3......) SELECT * FROM (

  • SQL Server 2012 多表连接查询功能实例代码

    废话不多说了,直接给大家贴代码了,具体代码如下所示: -- 交叉连接产生笛卡尔值 (X*Y) SELECT * FROM Student cross Join dbo.ClassInfo --另外一种写法 SELECT * FROM Student , ClassInfo -- 内连接 (Inner 可以省略) SELECT * FROM Student JOIN dbo.ClassInfo ON dbo.Student.Class = dbo.ClassInfo.ID; -- Inner Jo

  • jquery实现表格中点击相应行变色功能效果【实例代码】

    对于一个表格,为了使我们选中的项更容易区分,需要为选中项添加高亮,同时也需要,将其他项的高亮形式去除.类似于: <!DOCTYPE html> <html lang="en" xmlns="http://www.w3.org/1999/xhtml"> <head> <meta charset="utf-8" /> <title></title> <link href=&

  • Apache POI将PPT转换成图片实例代码

    本文主要分享的是关于Apache POI将PPT转换成图片的相关内容,简单介绍了Apache POI,具体内容如下. 1.Apache POI 简介 Apache POI 是用Java编写的免费开源的跨平台的 Java API,Apache POI提供API给Java程式对Microsoft Office格式档案读和写的功能. 可以查看官方文档 Apache POI官网 Apache POI操作PPT文档有两种方式: 1.POI-HSLF 对应的 Powerpoint '97(-2007) 的文

随机推荐