我有一个名为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条记录。
请帮助...
答案 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