恩恩,想了想,如果能确认功课范围的话,确实可以一条sql做出来,也不难
select student.studentname, substr(a.subject + b.subject +...., 1, len(a.subjet + b.subject + ....)-1) from student
left join (select studentid, subject + ',' as subject from subject where subject = '语文') a on student.id = a.studentid
left join (select studentid, subject + ',' as subject from subject where subject = '数学') b on student.id = b.studentid
.....
先创建个临时表temp1
insert into temp1 (ID, STUDENTNAME, subject) (select ID, STUDENTNAME , '' from STUDENT);
update temp1 set temp1.subject = '语文' from temp1, subject where temp1.id = subject.ID and subject.subject = '语文';
update temp1 set temp1.subject = case temp1.subject when '' then '数学' else temp1.subject + ',数学' end from temp1, subject where temp1.id = subject.ID and subject.subject = '语文';
update .......
反正一门功能执行一条sql就行了,最后再从temp1里select就OK