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

How I can pass the results obtained by a query with group_concat(distinct) in another query?

我有一个名为university_schools的table,其中包含每所大学的所有课程记录和一个table university_main_campus,其中包含所有大学的记录。我想要来自另一个 table 的所有课程名称,称为 'courses'(其中包含该大学每门课程的所有详细信息,包括 course_name、course_slug 等)。

这是我的查询:

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 条记录。

请帮忙...

无需使用 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)

试试这个查询,

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