如何在另一个查询中传递带有group_concat(distinct)的查询所获得的结果?

时间:2018-07-13 06:51:37

标签: mysql subquery group-concat

我有一个名为university_schools的表,其中包含每所大学的所有课程记录,而一个表university_main_campus则包含所有大学的记录。我希望从该大学内每门课程的另一个名为“课程”的表中获取所有课程名称(该表包含课程的所有详细信息,包括课程名,课程名等)。

这是我的查询:

SELECT * FROM courses 
WHERE course_id IN (SELECT GROUP_CONCAT(DISTINCT course_id) AS STR_CRSE_IDS 
                    FROM `university_schools` WHERE univ_id = '2289')

我只得到第一条记录,而应该有11条记录。

请帮助...

2 个答案:

答案 0 :(得分:0)

无需使用GROUP_CONCAT构建自定义字符串。您可以使用简单的IN

SELECT * 
FROM courses 
WHERE course_id IN (SELECT course_id  
                    FROM university_schools WHERE univ_id = '2289');

请注意,使用GROUP_CONCAT时,您将得到类似的内容:

IN ('1,2,3,4')
--and I guess you expect:
IN (1,2,3,4)

答案 1 :(得分:0)

尝试此查询,

SELECT courses.*, b.STR_CRSE_IDS FROM courses INNER JOIN (SELECT DISTINCT course_id as STR_CRSE_IDS FROM university_schools WHERE univ_id = '2289') AS b ON courses.course_id = b.STR_CRSE_IDS