SELECT TOP 1 正在返回多条记录

SELECT TOP 1 is returning multiple records

我将 link 我的数据库放在下面。

我有一个名为 'TestMonday1' 的查询,它的作用是 return 最少 'NoOfFrees' 的学生,并将查询结果插入课程 table . 运行 该查询应该有助于解释我的意思。我遇到的问题是我的 SQL 代码有 'SELECT TOP 1' 但是如果查询 return 两个学生有相同数量的免费它 return 这两个记录。这是一个时间 table 计划器,它应该只有 return 个结果,我还将代码放在下面,

非常感谢

代码:

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;

发生这种情况是因为在 ORDER BY 中访问 returns 所有记录(返回的所有记录都具有与 ORDER BY 中使用的字段相同的值)。

您可以向 ORDER BY 添加另一个字段以确保没有联系。 StudentID 看起来是个不错的候选人(虽然我不知道你的架构,如果它更适合,请替换为其他内容):

ORDER BY 
  Availability.NoOfFrees, Availability.StudentID;