group_concat的使用,一对多条件下一次查询拿出全部数据
group_concat函数的使用:
基本语法:group_concat( [DISTINCT] 要连接的字段 [Order BY 排序字段 ASC/DESC] [Separator ‘分隔符’] ) 中括号为非必加条件,此函数一般与group by [字段名] 使用。
使用情景:
一个老师教三个班级,这时候有一个需求就是展示出每个老师教的哪些班
SQL命令:
SELECT
teacher_name,
(
SELECT
GROUP_CONCAT(class_name)
FROM
class
WHERE
class.teacher_id = teacher.teacher_id
GROUP BY
teacher_id
) AS className
FROM
teache
输出结果: 默认的分隔符为‘,’ 可以通过Separator改变分隔符。还可以在函数中加入排序条件和去重条件,例如:
SELECT
teacher_name,
(
SELECT
GROUP_CONCAT( DISTINCT class_name ORDER BY class_name DESC SEPARATOR'-')
FROM
class
WHERE
class.teacher_id = teacher.teacher_id
GROUP BY
teacher_id
) AS className
FROM
teacher
输出结果: 个人感觉很好用,可以一次查询搞定,而不用查询后在后台搞定,削减效率。