Это известный эффект директивы top
в Access, но он не очень хорошо известен ...
Директива top
не возвращает верхние n
элементы, как можно легко поверить. Вместо этого он возвращает не менее n
отдельных элементов, определяемых по порядку результата.
В большинстве случаев это то же самое, но в вашем примере, где элементы с 5 по 8 имеют одинаковое значение заказа, все они включены. Возвращает первые пять элементов, а затем и все элементы, имеющие такое же значение заказа, что и пятый элемент.
Если вы не применяете порядок к таблице, учитываются все поля, поэтому, если у вас есть уникальное поле в результате, запрос всегда вернет пять элементов. То же самое, конечно, если уникальное поле включено в порядок.
Другие диалекты SQL могут вести себя по-разному. Например, одна только директива top
в T-SQL (SQL Server) никогда не возвращает больше, чем n
элементов. Однако, указав пункты with ties
и order by
вместе с top
, можно наблюдать то же поведение, что и в Access.