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;
我将 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;