首页 > 解决方案 > 在mysql中为学生获取相关科目

问题描述

我正在尝试获取已使用 MySQL 注册的学生的科目。

学生表:

学生表格式

科目表:

主题表格式

学生注册科目:

stu_subjects 表格格式

我的查询:

select *,(select  subject_id from  stu_subjects ss where ss.student_id = 
s.student_id ) as subject_id
from student s

执行上述查询时,出现以下错误:

错误

所以我修改了我的查询如下(添加限制1):

select *,(select  subject_id from  stu_subjects ss where ss.student_id = 
s.student_id limit 1) as subject_id
from student s

最终输出: 最终输出

如果您看到输出,我只会得到一个映射到学生的主题。但我需要学生注册的每一门科目。那么我该如何实现呢?

我想要实现的是: 我想要实现的是

标签: mysqlsql

解决方案


尽管 Jagrut Sharma 的回答是正确的,但此版本指定了主题 ID 的分隔符,并使用显式JOIN而不是隐式的分隔符。

编辑:这似乎,是默认分隔符,因此您可以从GROUP_CONCAT. 我将把它留在我的查询中,以便您知道如何在需要时更改它。

SELECT st.student_id, st.student_name
       GROUP_CONCAT(sb.subject_id SEPARATOR ',')
FROM stu_subjects sb JOIN student st ON sb.student_id = st.student_id
GROUP BY st.student_id;

推荐阅读