MySQLMariadbGROUP_CONCAT 函数使用介绍

By:授客 QQ1033553122

语法:

GROUP_CONCAT([DISTINCT] column_name [ORDER BY 序字段 ASC/DESC] [SEPARATOR '分隔符'])

注:测试时发现,排序似乎不起作用

实践

构造数据:

CREATE TABLE tb_test(

order_id INT,

goods_id INT,

user_name VARCHAR(7)

);

INSERT INTO tb_test VALUES(1000000001, 1, '授客'), (1000000001, 2, '授客'), (1000000001, 3, '授客'),(1000000002, 4, '小谢'), (1000000002, 5, '小谢'), (1000000002, 6, '小谢');

SELECT * FROM tb_test;


例子
1

查询每个用户购买的商品(按user_name分组,显示其购买的所有商品)

SELECT t1.`order_id` AS '订单号',

t1.`user_name` AS '用户名',

GROUP_CONCAT((CASE WHEN t1.`goods_id` = 1 THEN '小苹果' 
WHEN t1.`goods_id` = 2 THEN '雪梨'
WHEN t1.`goods_id` = 3 THEN '香蕉'
WHEN t1.`goods_id` = 4 THEN '小李子'
WHEN t1.`goods_id` = 5 THEN '芭乐'
WHEN t1.`goods_id` = 6 THEN '葡萄'
END)) AS '商品'

FROM tb_test t1

GROUP BY t1.`user_name`;

结果:


例子
2

查询每个用户购买的商品(按user_name分组,显示其购买的所有商品),商品之间用";"分隔

SELECT t1.`order_id` AS '订单号',

t1.`user_name` AS '用户名',

GROUP_CONCAT((CASE WHEN t1.`goods_id` = 1 THEN '小苹果' 
WHEN t1.`goods_id` = 2 THEN '雪梨'
WHEN t1.`goods_id` = 3 THEN '香蕉'
WHEN t1.`goods_id` = 4 THEN '小李子'
WHEN t1.`goods_id` = 5 THEN '芭乐'
WHEN t1.`goods_id` = 6 THEN '葡萄'
END) SEPARATOR ';') AS '商品'

FROM tb_test t1

GROUP BY t1.`user_name`;

结果:


例子
3

查询每个用户购买的商品(按user_name分组,显示其购买的所有商品),商品名称不重复

SELECT t1.`order_id` AS '订单号',

t1.`user_name` AS '用户名',

GROUP_CONCAT((CASE WHEN t1.`goods_id` = 1 THEN '小苹果' 
WHEN t1.`goods_id` = 2 THEN '雪梨'

WHEN t1.`goods_id` = 3 THEN '香蕉'
WHEN t1.`goods_id` = 4 THEN '小李子'

WHEN t1.`goods_id` = 5 THEN '芭乐'
WHEN t1.`goods_id` = 6 THEN '葡萄'
END) ) AS '商品'

FROM tb_test t1

GROUP BY t1.`user_name`;

运行结果:

修改脚本如下:

SELECT t1.`order_id` AS '订单号',

t1.`user_name` AS '用户名',

GROUP_CONCAT(DISTINCT (CASE WHEN t1.`goods_id` = 1 THEN
'小苹果' 
WHEN t1.`goods_id` = 2 THEN '雪梨'

WHEN t1.`goods_id` = 3 THEN '香蕉'
WHEN t1.`goods_id` = 4 THEN '小李子'

WHEN t1.`goods_id` = 5 THEN '芭乐'
WHEN t1.`goods_id` = 6 THEN '葡萄'
END) ) AS '商品'

FROM tb_test t1

GROUP BY t1.`user_name`;

运行结果如下:

Mariadb MySQL、Mariadb中GROUP_CONCAT函数使用介绍的更多相关文章

  1. MySQL中group_concat函数深入理解

    本文通过实例介绍了MySQL中的group_concat函数的使用方法,比如select group_concat(name) . 一.MySQL中group_concat函数 完整的语法如下: gr ...

  2. MySQL中group_concat函数

    本文通过实例介绍了MySQL中的group_concat函数的使用方法,比如select group_concat(name) .MySQL中group_concat函数完整的语法如下:group_c ...

  3. MySQL中group_concat函数 --- 很有用的一个用来查询出所有group by 分组后所有 同组内的 内容

    本文通过实例介绍了MySQL中的group_concat函数的使用方法,比如select group_concat(name) . MySQL中group_concat函数 完整的语法如下: grou ...

  4. MySQL中group_concat函数-和group by配合使用

    MySQL中group_concat函数 完整的语法如下: group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator '分隔 ...

  5. mysql中group_concat函数用法

    该函数返回带有来自一个组的连接的非NULL值的字符串结果.该函数是一个增强的Sybase SQL Anywhere支持的基本LIST()函数. 语法结构: GROUP_CONCAT([DISTINCT ...

  6. MYSQL中group_concat( )函数中参数的排序方法

    使用mysql中的group_concat( )函数连接指定字段时,可以先对该字段进行排序. PS:是因为二刷mysql的51道题的第12题遇到的:查询和" 01 "号同学学习的课 ...

  7. 关于Mysql中GROUP_CONCAT函数返回值长度的坑

    1.GROUP_CONCAT函数: 功能:将group by产生的同一个分组中的值连接起来,返回一个字符串结果. 语法:group_concat( [distinct] 要连接的字段 [order b ...

  8. 关于mysql中GROUP_CONCAT函数的使用

    偶然看到公司存储过程中有个字符串拼接的函数,改bug过程中使用到了,还挺有用的,于是记录下来方便记忆,帮助有需要的人. 这是我需要整理的串,他是调用了一个存储过程,传入组织机构的id和迭代层数,返回来 ...

  9. MySQL中group_concat()函数的排序方法

    group_concat()函数的参数是可以直接使用order by排序的.666..下面通过例子来说明,首先看下面的t1表. 比如,我们要查看每个人的多个分数,将该人对应的多个分数显示在一起,分数要 ...

随机推荐

  1. java重点知识

    一.java基本知识点 java是由SUN公司在1995年推出的,在2009年SUN公司又被甲骨文公司收购,所以甲骨文公司获得java版权.其底层是由C语言写的,java分为三个体系: JavaSE, ...

  2. Error:Could not determine the class-path for interface com.android.builder.model.AndroidProject.

    Android Studio导入Eclipse项目报错Error:Could not determine the class-path for interface com.android.builde ...

  3. Android学习总结——INSTALL_FAILED_CONFLICTING_PROVIDER

    在写个小demo的时候出现了这个问题: 排除手机内存不足.以及没用安装过这个应用的问题之后,发现是android:authorities="..."出了问题,可能还有其他应用程序和 ...

  4. 【转】深入理解Java中的final关键字

    Java 中的final关键字非常重要,它可以应用于类.方法以及变量.这篇文章中我将带你看看什么是final关键字?将变量,方法和类声明为final代表了 什么?使用final的好处是什么?最后也有一 ...

  5. print默认在末尾添加一个换行符,但其实也可以不用!

    白月黑羽今天给大家分享另外一个冷知识:) python中 print函数打印信息时默认添加一个换行符,所以你看到一条print语句,则单独占一行,那是否可以不要换行符呢? 答案是肯定的,当然可以,可用 ...

  6. 高可用Hadoop平台-实战尾声篇

    1.概述 今天这篇博客就是<高可用Hadoop平台>的尾声篇了,从搭建安装到入门运行 Hadoop 版的 HelloWorld(WordCount 可以称的上是 Hadoop 版的 Hel ...

  7. lucene 初探

    前言: window文件管理右上角, 有个搜索功能, 可以根据文件名进行搜索. 那如果从文件名上判断不出内容, 我岂不是要一个一个的打开文件, 查看文件的内容, 去判断是否是我要的文件? 几个, 十几 ...

  8. Maven 入门——Maven 的安装和配置

    1.安装 Windows 环境 Maven 官网下载安装文件 解压到指定目录 配置环境变量(M2_HOME) cmd 输入 mvn -v Mac环境 brew install maven 配置环境变量 ...

  9. openerp7 时区问题解决--改成本地时区

    由于目前openerp的时区,读取的是UTC时间,而我国本地时间比UTC快8小时 问题就导致,写入数据库的时候时间相差8小时,以及Openerp日志输出时间格式也相差8小时和前端显示问题 1.更改op ...

  10. React Router基础教程

    React是个技术栈,单单使用React很难构建复杂的Web应用程序,很多情况下我们需要引入其他相关的技术 React Router是React的路由库,保持相关页面部件与URL间的同步 下面就来简单 ...