#1242:子查询返回多行

时间:2012-07-18 17:43:46

标签: mysql sql phpmyadmin mysql-error-1242

我有关于mysql的问题。

我有几张表格,例如coursepapersstudentsstudentspapers

现在我想要的是我的查询应该返回如下结果:

它应该从学生表中选择学生姓名,学生类别,从学生论文中选择学生可选论文,但我没有在学生论文表中提及任何内容,而是在论文表中。

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

2 个答案:

答案 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

但是,如果没有看到表格的结构,很难说这是否是正确的查询。