我将在下面链接我的数据库。
我有一个名为“TestMonday1”的查询,它的作用是返回具有最少“NoOfFrees”的学生并将查询结果插入到类(class)表中。运行查询应该有助于解释我的意思。我遇到的问题是我的 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;
最佳答案
发生这种情况是因为 Access 会在 ORDER BY
中存在联系的情况下返回所有记录。 (返回的所有记录都具有相同的字段值 ORDER BY
)。
您可以向 ORDER BY
添加另一个字段以确保没有关系。 StudentID
看起来是一个不错的候选人(虽然我不知道你的架构,如果更适合的话,用其他东西替换):
ORDER BY
Availability.NoOfFrees, Availability.StudentID;
关于sql - SELECT TOP 1 返回多条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34773345/