Dav*_*e B 1 sql ms-access access-vba
我有以下查询来选择前10名.但是结果显示11行,当我将select更改为前20时,它显示21?
导致此问题的查询是否有问题?
SELECT TOP 10 Format([DutyDate],"ddd"", ""dd-mmm-yy") AS [Shift Date], Count(Shifts.ID) AS Shifts
FROM Shifts
GROUP BY Format([DutyDate],"ddd"", ""dd-mmm-yy")
ORDER BY Count(Shifts.ID) DESC;
Run Code Online (Sandbox Code Playgroud)
当MS Access处理时TOP,它将所有联系放入最后一个值.在SQL Server中,这相当于TOP WITH TIES.因此,如果第11行与第10行具有相同的计数,那么它包括 - 和第12行,依此类推,如果计数相同.
要解决这个问题,你需要包含某种打破平局.在a GROUP BY,那将是日期.这是一个简单的方法:
ORDER BY Count(Shifts.ID) DESC, MIN(DutyDate)
Run Code Online (Sandbox Code Playgroud)