sql - SELECT TOP 1 返回多条记录

标签 sql ms-access-2010

我将在下面链接我的数据库。

我有一个名为“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/

相关文章:

SQL CLR SqlBulkCopy 从数据表

ms-access - VBA中的普通打开文件语句

ms-access - 记录太大 MS Access 运行时错误

sql - 从重复记录中为每个唯一 ID 选择一行

database - 在 Microsoft Access (2010) 中计算年龄(以年和月为单位)

sql - 删除 postgres 中的孤立记录。使用连接删除。表现

mysql - 如果值存在于另一个表中,如何更新 MYSQL 列?

SQL 通过/左连接按组获取最大 n 的所有行

ms-access - 在Access应用程序中混合ADO和DAO

sql - 如何使用?帮助防止 Rails 中的 SQL 注入(inject)?