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配合in 只返回一个结果_第1张图片

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

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

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

字符串切割成数组 

通过网络找到的方法。

GROUP_CONCAT配合in 只返回一个结果_第2张图片

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_CONCAT配合in 只返回一个结果_第3张图片

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

GROUP_CONCAT配合in 只返回一个结果_第4张图片

你可能感兴趣的:(GROUP_CONCAT配合in 只返回一个结果)