MySQL学习笔记(一)

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

输出结果:
在这里插入图片描述
个人感觉很好用,可以一次查询搞定,而不用查询后在后台搞定,削减效率。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值