我将在下面链接我的数据库。
我有一个名为' 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 :(得分:7)
这是因为Access在ORDER BY
中返回所有记录时返回所有记录(返回的所有记录都具有ORDER BY
中使用的相同字段值)。
您可以向ORDER BY
添加另一个字段,以确保没有联系。 StudentID
看起来是一个很好的候选人(虽然我不知道你的架构,如果它更适合,可以用其他东西替换):
ORDER BY
Availability.NoOfFrees, Availability.StudentID;