MySQL中CONCAT()和GROUP_CONCAT()函数的使用
程序员文章站
2024-03-20 08:45:46
...
@TOC
CONCAT()使用
- 语法:concat(str1, str2,…)
- 功能:将多个字符串连接在一起
返回结果为连接参数产生的字符串,如果有任何一个参数为null,则返回值为null。 - 使用
初始数据:
SELECT
id,
YEAR,
term,
course_id
FROM
edu_course_class
WHERE
id = '46639'
使用concat函数连接相应字段
SELECT
id,
YEAR,
term,
course_id,
CONCAT( YEAR, '-', term, '-', course_id )
FROM
edu_course_class
WHERE
id = '46639'
当其中有值为null值时,使用concat函数返回值为null
UPDATE edu_course_class SET term=NULL WHERE id='46639'
SELECT
id,
YEAR,
term,
course_id,
CONCAT( YEAR, '-', term, '-', course_id )
FROM
edu_course_class
WHERE
id = '46639'
相似函数 CONCAT_WS()使用
- 语法:CONCAT_WS(separator,str1,str2,…)
- 功能:和concat()一样,将多个字符串连接成一个字符串,但是可以一次性指定分隔符(concat_ws就是concat with separator)
- 用法:
SELECT
id,
YEAR,
term,
course_id,
CONCAT_WS('-',year,term,course_id)
FROM
edu_course_class
WHERE
id = '46639'
注意:第一个参数指定分隔符。需要注意的是分隔符不能为null,如果为null,则返回结果为null。
GROUP_CONCAT()函数
- 语法: GROUP_CONCAT(expr)
- 功能:将group by产生的同一个分组中的值连接起来,返回一个字符串结果。
- 使用:
初始数据:
利用group_concat将学年,年级,学期,课程相同的老师合并到一行
SELECT
YEAR,
term,
grade,
course_id,
GROUP_CONCAT( teacher_id )
FROM
edu_course_class
WHERE
plan_detail_id = '117827'
GROUP BY
YEAR,
term,
grade,
course_id
现在可以看到想要的功能已经实现,但合并的老师ID3627是重复的,现在做去重
SELECT
YEAR,
term,
grade,
course_id,
GROUP_CONCAT( DISTINCT(teacher_id) )
FROM
edu_course_class
WHERE
plan_detail_id = '117827'
GROUP BY
YEAR,
term,
grade,
course_id
SELECT
扩展:有id但不知道名字怎么办,用find_in_set函数带出老师姓名
SELECT
a.year,
a.term,
a.grade,
a.course_id,
a.teacherId,
GROUP_CONCAT( su.username )
FROM
(
SELECT
YEAR,
term,
grade,
course_id,
GROUP_CONCAT( DISTINCT ( teacher_id ) ) teacherId
FROM
edu_course_class
WHERE
plan_detail_id = '117827'
GROUP BY
YEAR,
term,
grade,
course_id
) a
INNER JOIN sys_user su ON FIND_IN_SET( su.user_id, a.teacherId ) GROUP BY a.year,a.teacherId,a.term,a.grade,a.course_id
推荐阅读
-
Mysql中使用GROUP_CONCAT()函数会出现:BLOB问题的解决?利用cast函数
-
mysql中GROUP_CONCAT()函数的含义及用法
-
MySql中GROUP_CONCAT的使用
-
mysql的SUBSTRING_INDEX 和GROUP_CONCAT
-
MySQL中CONCAT()和GROUP_CONCAT()函数的使用
-
MYSQL的group_concat()函数中实现将多行同一字段数据合并成一个数据 博客分类: 数据库 sqlMySQL
-
SparkStreaming消费Kafka中的数据 使用zookeeper和MySQL保存偏移量的两种方式
-
使用java web 在jsp文件及Class中连接MySQL和SQLsever 的驱动方法
-
使用java web 在jsp文件及Class中连接MySQL和SQLsever 的驱动方法
-
MySQL中的if和case语句使用总结