Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 1242:子查询返回多行_Mysql_Sql_Phpmyadmin_Mysql Error 1242 - Fatal编程技术网

Mysql 1242:子查询返回多行

Mysql 1242:子查询返回多行,mysql,sql,phpmyadmin,mysql-error-1242,Mysql,Sql,Phpmyadmin,Mysql Error 1242,我有一个关于mysql的问题 我几乎没有课程表、论文表、学生表和学生表 现在我想要的是,我的查询应该返回如下结果: 它应该从学生表中选择学生姓名,学生类别,学生自选论文,但我没有在我的学生论文表中提到任何东西,而是在论文表中提到 论文表以id作为主键,我在studentspaper中使用了id作为外键 现在,我使用的简单查询是: select st.name, s.paperid from students st, sps s join papers on paperid w

我有一个关于mysql的问题

我几乎没有课程表、论文表、学生表和学生表

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

它应该从学生表中选择学生姓名,学生类别,学生自选论文,但我没有在我的学生论文表中提到任何东西,而是在论文表中提到

论文表以id作为主键,我在studentspaper中使用了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在这种情况下,您必须将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


这应该可以解决您的问题。

在这种情况下,您必须将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

这将解决您的问题。

您的查询是:

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
它缺少学生和SP之间的连接。我想你的意思是:

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
但是,如果看不到表的结构,很难说这是不是正确的查询。

您的查询是:

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
它缺少学生和SP之间的连接。我想你的意思是:

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

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

这个链接应该在这里:这个答案是正确的。如果这个答案对你有帮助,请接受它。我想我的问题不合适。我想要的是,从studentpaper表中,它应该取出那些id等于type=optional的paper表id的纸张。@iperfect OK,尝试使用not in代替in。这样,您将排除所有类型为可选的paperid。此链接应位于此处:此答案正确。如果这个答案对你有帮助,请接受它。我想我的问题不合适。我想要的是,从studentpaper表中,它应该取出那些id等于type=optional的paper表id的纸张。@iperfect OK,尝试使用not in代替in。这样,您将排除所有类型为可选的paperid。非常感谢。说真的,你让我高兴极了。非常感谢你。说真的,你让我很开心。