MS Access SQL 错误

MS Access SQL error

此代码本应 select 成为 TOP 1,但它无法正常工作。它不是只显示 TOP 1 记录,而是显示大量记录。可能是因为我引用了2个table。在另一个代码中,我只有 1 个并且它起作用了。不过,我需要参考 table 出勤率,所以我不确定如何解决这个问题。谢谢!

SELECT TOP 1 userID 
FROM attendance, CFRRR 
WHERE [attendance.Programs] LIKE CFRRR.program  
AND [attendance.Language] LIKE CFRRR.language 
AND [attendance.Status] = 'Available' 
ORDER BY TS ASC

这是考勤的 table 字段:用户 ID、用户名、主管、类别、出勤日期、出勤时间、课程、语言、状态、TS。

这是 CFRRR 的 table 字段:CFRRRID、WorkerID、Workeremail、Workername、Dateassigned、assignedby、RRRmonth、Scheduleddate、scheduledtime、type、ScheduledType、caseid、language、lastname、firstname、Checkedin、Qid , status, CompletedType, comments, actiondate, verifduedate, program.

很明显最后一个table有很多记录

MS Access 中的

SELECT TOP 不同于 SQL 服务器中的 SELECT TOP 以及其他数据库中的类似功能。它 return 是基于 order by 的前几行。然后它继续 return 与最后一个值匹配的行。这有时很方便,这就是为什么 SQL 服务器具有此功能的原因 SELECT TOP WITH TIES.

要解决此问题,您需要为每个生成的行添加一个或多个唯一的列:

SELECT TOP 1 userID 
FROM attendance as a,
     CFRRR 
WHERE a.Programs LIKE CFRRR.program  AND
      a.Language LIKE CFRRR.language  AND
      a.Status = 'Available' 
ORDER BY TS ASC, userId, CFFRID