根据您实际表,这是可能的一个SQL语句: -
SELECT s.student_name,
SUBSTRING_INDEX(GROUP_CONCAT(t.teacher_name ORDER BY teacher_id), ',', 1) AS teacher_name1,
IF(COUNT(t.teacher_id) >= 2, SUBSTRING_INDEX(SUBSTRING_INDEX(GROUP_CONCAT(t.teacher_name ORDER BY teacher_id), ',', 2), ',', -1), NULL) AS teacher_name2,
IF(COUNT(t.teacher_id) >= 3, SUBSTRING_INDEX(SUBSTRING_INDEX(GROUP_CONCAT(t.teacher_name ORDER BY teacher_id), ',', 3), ',', -1), NULL) AS teacher_name3,
IF(COUNT(t.teacher_id) >= 4, SUBSTRING_INDEX(SUBSTRING_INDEX(GROUP_CONCAT(t.teacher_name ORDER BY teacher_id), ',', 4), ',', -1), NULL) AS teacher_name4,
IF(COUNT(t.teacher_id) >= 5, SUBSTRING_INDEX(SUBSTRING_INDEX(GROUP_CONCAT(t.teacher_name ORDER BY teacher_id), ',', 5), ',', -1), NULL) AS teacher_name5
FROM student s
LEFT OUTER JOIN teacher t ON s.subject_enrolled = t.subject_teaches
GROUP BY s.student_id
但是我关心的是你的表的描述。你的学生表有一个student_id作为主键,然后是subject_enrolled的一个字段。这表明您为每个学生都有多个student_id,或者subject_enrolled是他们注册的所有主题的分隔字段。
我上面的SQL假设学生ID不是主键,因此每个学生/学生ID可以有多行。
你能更新例子吗?.....你的问题对我们来说并不清楚。 –