MySql中GROUP_CONCAT函数把多条数据显示成一条数据

有这样一个需求
1:班级表
id class_name
2:学生表
id name class_id
 
如果我们要查所有的班级以及每个班级下的学生,你一定会想到这样写法:

 代码如下 复制代码
SELECT
banji.*, user.name
FROM `banji`
left join user
on banji.id=user.`class`
where banji.id=2

这样我们得到的结果的个数是和学生人数相同的,而我希望得到的就是一条数据,而这条数据中还要包含所有学生,可以这样写:

 代码如下 复制代码
SELECT
banji.*, GROUP_CONCAT(user.name) as names
FROM `banji`
left join user
on banji.id=user.`class`
where banji.id=2
这样就只得到一条结果了,而结果中包含所有的学生name,
id  class_name  names

2  二  lisi,zhaoliu,liu,小二,xiaoming,小张
 
还可以自定义分隔符:

 代码如下 复制代码
SELECT
banji.*, GROUP_CONCAT(user.name SEPARATOR "|") as names
FROM `banji`
left join user
on banji.id=user.`class`
where banji.id=2
得到的结果:
id  class_name  names
2  二  lisi|zhaoliu|liu|小二|xiaoming|小张
时间: 2024-10-28 06:11:48

MySql中GROUP_CONCAT函数把多条数据显示成一条数据的相关文章

MySQL中group_concat函数使用例子

本文通过实例介绍了MySQL中的group_concat函数的使用方法,比如select group_concat(name) . MySQL中group_concat函数 完整的语法如下: group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator '分隔符']) 基本查询 mysql> select * from aa; +--+--+ | id| name | +--+--+ |1 | 10| |1 | 20| |1

mysql中group_concat函数用法

一.语法   GROUP_CONCAT([DISTINCT] expr [,expr ...] [ORDER BY {unsigned_integer | col_name | expr} [ASC | DESC] [,col_name ...]] [SEPARATOR str_val])   也可以简单的理解   group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator '分隔符'])   二.group_concat

为什么 MySQL 中 GROUP_CONCAT 函数返回 BLOB 大对象类型?(Why GROUP_CONCAT returns BLOB?)

为什么 MySQL 中 GROUP_CONCAT 函数返回 BLOB 大对象类型?(Why GROUP_CONCAT returns BLOB?) 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作.

MySQL中group_concat函数

本文通过实例介绍了MySQL中的group_concat函数的使用方法,比如select group_concat(name) .MySQL中group_concat函数完整的语法如下:group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator '分隔符']) 基本查询 mysql> select * from aa;+------+------+| id| name |+------+------+|1 | 10||1

MySql中GROUP_CONCAT()函数使用详解

语法:  代码如下 复制代码 GROUP_CONCAT([DISTINCT] expr [,expr ...]                [ORDER BY {unsigned_integer | col_name | expr}                    [ASC | DESC] [,col_name ...]]                [SEPARATOR str_val]) 1.例如:  代码如下 复制代码 SELECT student_id, GROUP_CONCA

浅谈MySQL中group_concat()函数的排序方法_Mysql

group_concat()函数的参数是可以直接使用order by排序的.666.. 下面通过例子来说明,首先看下面的t1表. 比如,我们要查看每个人的多个分数,将该人对应的多个分数显示在一起,分数要从高到底排序. 可以这样写: SELECT username,GROUP_CONCAT(score ORDER BY score DESC) AS myScore FROM t1 GROUP BY username; 效果如下:

浅谈mysql中concat函数,mysql在字段前/后增加字符串

MySQL中concat函数 使用方法: CONCAT(str1,str2,-) 返回结果为连接参数产生的字符串.如有任何一个参数为NULL ,则返回值为 NULL. 注意: 如果所有参数均为非二进制字符串,则结果为非二进制字符串. 如果自变量中含有任一二进制字符串,则结果为一个二进制字符串. 一个数字参数被转化为与之相等的二进制字符串格式:若要避免这种情况,可使用显式类型 cast, 例如: SELECT CONCAT(CAST(int_col AS CHAR), char_col) MySQ

mysql中concat函数实现数据库字段合并查询

mysql中怎么合并两个字段为一个字段呢?试了好多方法,结果还是不是我想要的 例如:select (a+b) as c from 表 类型也一致都是varchar型的,可就是显示不正确. 直到concat() MySQL中concat函数 下面通过一个例子介绍MySQL中的concat函数的使用方法,比如select concat('11','22','33'). MySQL中concat函数 使用方法: CONCAT(str1,str2,-)  返回结果为连接参数产生的字符串.如有任何一个参数

Mysql的GROUP_CONCAT()函数使用方法_php基础

语法: GROUP_CONCAT([DISTINCT] expr [,expr ...][ORDER BY {unsigned_integer | col_name | expr}[ASC | DESC] [,col_name ...]][SEPARATOR str_val]) 下面演示一下这个函数,先建立一个学生选课表student_courses,并填充一些测试数据. SQL代码 复制代码 代码如下: CREATE TABLE student_courses (          stude