我正在尝试学习使用MySQL注册的学生。
学生表:
科目表:
学生报名科目:
我的查询:
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
如果您看到输出,我只会将一个主题映射到学生。但我需要学生注册的每个科目。那我怎么能实现呢?
答案 0 :(得分:0)
使用此查询:
System.IO.FileNotFoundException
<强>插图:强>
.NET Assemblies -> Appdomain: plugintest
答案 1 :(得分:0)
虽然Jagrut Sharma的回答是正确的,但这个版本指定了主题'id的分隔符,并使用了明确的JOIN
而不是隐式的。{/ p>
修改:,
似乎是默认分隔符,因此您可以从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;
答案 2 :(得分:0)
您可以使用简单的连接查询来实现此目的。
SELECT st.student_id,st.student_name,sb.subject_name
FROM student st
JOIN stu_subjects ss ON (ss.student_id = st.student_id)
JOIN Subject sb ON (ss.subject_id = sb.subject_id )
同样如你所提到的,如果你只想要主题MySQL,那么在下面添加条件
WHERE subject_name ='MySQL'