我正在尝试编写一个sql查询来显示每门课程的学生列表。下图显示了数据库关系。
我编写的sql查询是:
select * from Courses
inner join Enrollments on Enrollments.CourseId = Courses.CourseId
inner join Student on Enrollments.StudentId = StudentId
where Courses.CourseId = 1
问题是,我得到的数据比我预期的要多,因为只有一个学生注册了这门课程,但我得到了10个条目。我不确定我是否做了一些根本错误的事情,或者我的质疑是问题所在。
这是数据
这就是结果
我原以为只会退回两排。
谢谢
2条答案
按热度按时间zd287kbt1#
表的主键
Student
是Id
,不是StudentId
. 所以正确的查询是:wmvff8tz2#
查询中的每一列都必须用表名限定。
您没有限定该列
StudentId
在此联接中:如果你这样做了,你会发现错误是没有列
StudentId
在table上Student
你应该使用这个列Id
:或者更好地使用表的别名: