我有关于mysql的问题。
我有几张表格,例如course
,papers
,students
,studentspapers
现在我想要的是我的查询应该返回如下结果:
它应该从学生表中选择学生姓名,学生类别,从学生论文中选择学生可选论文,但我没有在学生论文表中提及任何内容,而是在论文表中。
Papers表将id作为主键,我在学生论文中用作外键。
现在我使用的简单查询是:
select
st.name,
s.paperid
from
students st,
sps s join papers
on paperid
where
paperid = (select p.p_id from papers p where type='optional')
and st.course=1
我不知道该怎么办。
它说子查询返回超过1行#1242
答案 0 :(得分:4)
在这种情况下,您必须将SQL更改为:
select st.name, s.paperid
from students st, sps s join papers on paperid
where paperid in (select p.p_id from papers p where type='optional') and st.course=1
我刚刚将“=”改为“in”。
这可以解决您的问题。
答案 1 :(得分:0)
您的查询是:
select st.name, s.paperid
from students st,
sps s join
papers
on paperid
where paperid= (select p.p_id from papers p where type='optional') and st.course=1
缺少学生和学生之间的联系。我想你的意思是:
select st.name, s.paperid
from students st join
sps s
on st.studentid = sps.studentid join
papers p
on p.paperid = sps.paperid
where p.type='optional' and st.course=1
但是,如果没有看到表格的结构,很难说这是否是正确的查询。