mysql - 如何在MySQL中克服 "Result consisted more than one row"

标签 mysql sql

<分区>

我有这样的查询来选择学生正在学习的类(class):

SELECT course_student.course from course_student inner join
(select student.student_id from student inner join reg_user 
on student.reg_user = reg_user.reg_user_id
WHERE reg_user_id=5) as tmp 
on tmp.student_id = course_student.student into @vcourse;

但是,由于 reg_user_id=5 将返回 2 行,因为该学生选修了 2 门类(class),下面的查询返回与用户 5 在同一类(class)中的所有学生,返回错误“结果超过一行”。

select family_name, middle_name, given_name FROM reg_user
inner join (select reg_user from lecturer inner join course_lecturer
on lecturer = lecturer_id
where course = @vcourse) as temp on temp.reg_user = reg_user_id;

我知道这个问题是由于使用 SELECT...INTO 查询引起的,但我不知道如何解决它。如果有人知道如何将多个结果放入 WHERE 条件中,我将不胜感激。谢谢 Ps:这是数据库结构,以便您可以按照我的查询 enter image description here

我想从第一个查询中获取所有结果并在第二个查询中使用这些结果。 第一个将选择 student_id=5 的所有 course_id。 第二个将选择与id=5的学生在同一类(class)的所有注册用户的名称。

最佳答案

对于你的问题,我看到了几种解决方案:

  • 要么检查查询,使其只返回一行。例如通过添加 LIMIT 子句 1
  • 将结果存储在临时表而不是变量中
  • 或与 CURSOR 一起工作,以便能够处理主机程序中请求返回的每一行

关于mysql - 如何在MySQL中克服 "Result consisted more than one row",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52333080/

相关文章:

mysql - Code-igniter MySql 中的 Json 数组问题

MySQL:唯一,但默认为 NULL - 通过创建表允许。允许插入 1 个以上的 NULL。为什么?

sql - 如何使用 T-SQL 从 URL 读取 XML?

MySQL 变量优先级

sql - INSERT INTO 查询中的多个 SELECT

mysql - 我可以在加入前检查表是否存在吗?

mysql - 将另一个表中的字段值和常量插入到表中

mysql - 在最后三个字符之前插入空格

MySQL 查询来分析结果并对其进行标记

SQL Server 2008 列名 'Type' 未显示在更新查询中