Se o SELECT TOP n registros apresentar valores duplicados, todos serão exibidos no resultado, o que em algumas situações pode resultar em problemas no banco de dados.
Nas figuras abaixo, exemplifico o caso.
Interessante que, a mesma instrução no SQL Server 2008 R2 (e acredito que em qualquer versão do SQL Server), retorna apenas 1 registro, como era de se esperar.
Na sequencia, parte do help do Access 2007 comentando esse tipo de situação.
;-)
Retorna um determinado número de registros que se encontrem na parte superior ou
na parte inferior de um intervalo especificado pela cláusula ORDER BY. Suponha
que você queira os nomes dos primeiros 25 estudantes da turma de 1994:
SELECT TOP 25
FirstName, LastName
FROM Students
WHERE GraduationYear = 2003
ORDER BY GradePointAverage DESC;
Se você não incluir a cláusula ORDER BY, a consulta retornará um conjunto arbitrário de 25 registros da tabela Students que satisfaça a cláusula WHERE.
No exemplo anterior, se as médias de pontuação de grau 25 e 26 forem as mesmas, a consulta retornará 26 registros.