GROUP_CONCAT配合in 只返回一个结果

		SELECT GROUP_CONCAT(a.TEACHERNAME) FROM teacher_info a WHERE a.DEL_FLAG = '0'
		AND a.TEACHERID IN(b.teacherid)

这个 sql中    b.teacherid 的值是是用逗号拼接的字符串。

但是查询的GROUP_CONCAT都是只显示字符串的第一个id 的值。

因为 in('1','2','3',''4)要这种格式,才能实现全部查询出来,而我们实际sql 传入是 这种格式 in('1,2,3,4')

就想到把字符串切割成数组,因为in 后面的数组是可以查询出来的

字符串切割成数组 

通过网络找到的方法。

SELECT
	b.courseid,
	b.coursename,
	b.teacherid,
	(
	SELECT
		GROUP_CONCAT(a.TEACHERNAME)
	FROM
		teacher_info a 
	WHERE
		a.DEL_FLAG = '0' 
		AND a.TEACHERID IN(substring_index(substring_index(b.teacherid, ',', c.help_topic_id + 1 ), ',',-1 ) ) 
	) AS tname,
	( SELECT COUNT( * ) FROM course_section c WHERE c.COURSEID = b.courseid AND c.DEL_FLAG = '0' ) AS coursenum 
FROM
	course_info b
	
	JOIN mysql.help_topic c ON c.help_topic_id < ( length( b.teacherid ) - length( REPLACE ( b.teacherid, ',', '' ) ) + 1 ) 

执行上面的sql 结果如下,in的查询生效了

再加上 GROUP BY 的条件 结果生效

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值