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 的条件 结果生效