2016-01-13 72 views
3

我将在下面链接我的数据库。SELECT TOP 1正在返回多个记录

我有一个名为'TestMonday1'的查询,这样做会返回带有最少'NoOfFrees'的学生,并将查询结果插入到课程表中。运行查询应该有助于解释我的意思。我所遇到的问题是我的SQL代码有'SELECT TOP 1',但如果查询返回两个具有相同数量的释放的学生,它将返回这两个记录。威特这是一个时间表策划者,它应该永远只返回一个结果,我也应该把下面的代码,

非常感谢

代码:

INSERT INTO Lesson (StudentID, LessonStart, LessonEnd, DayOfWeek) 
SELECT TOP 1 Availability.StudentID, Availability.StartTime, 
      Availability.EndTime, Availability.DayOfWeek 
FROM Availability 
WHERE 
    Availability.StartTime='16:00:00' AND 
    Availability.EndTime='18:00:00' AND 
    Availability.DayOfWeek='Monday' AND 
    LessonTaken IS NULL 
ORDER BY 
    Availability.NoOfFrees; 
+0

这就是'TOP 1'在MS Access会当有对领带的'按'键排序。 –

+0

有没有其他的选择?因为它只需要返回一条记录。 –

回答

5

这是因为访问返回的所有记录ORDER BY中的关系情况(返回的所有记录具有相同的ORDER BY中使用的字段值)。

您可以添加另一个字段到ORDER BY以确保没有关系。 StudentID看起来像一个很好的候选人(虽然我不知道你的方案,更换别的东西,如果它适合更好):

ORDER BY 
    Availability.NoOfFrees, Availability.StudentID; 
+1

你好!这看起来是一个好主意,只要最终的结果是它返回一个记录,它就不会有太大的影响,它会一展身手!非常感谢! –

+1

是的,这似乎是做了诡计,我没有意识到,MS Access返回所有记录,如果有像这样的情况下,方便知道! –