В SQL server TOP возвращает неожиданные строки.
Привет, у меня есть стол сотрудников. Он имеет EmployeeName (varchar (100)) и поле зарплаты (deciaml). Все записи находятся в отсортированном порядке,и я пытался получить записи от 11-го сотрудника до 20-го. Я знаю, что есть несколько простых способов получить эти данные, и я также сделал это 3-4 различными способами. Но один из способов, который я пробовал, не работает, и он повторяет неожиданные данные. Ниже приведены сценарии, которые я использую:
Сценарий данных:
declare @counter int = 1 while(@counter <= 50) begin insert into Employee (name,salary) select CONCAT('name - ',@counter),100*@counter; set @counter += 1; end Select * from Employee
Запрос для извлечения записей:
select top(10) * from ( Select Top(20)* from Employee ) as t order by t.id desc
Пояснение: во-первых, я получаю записи о первых 20 сотрудниках, используя TOP(20). Затем я пытаюсь упорядочить данные 20 сотрудников в порядке убывания, а затем получить лучших (10) сотрудников. Он предполагал вернуть мне сотрудника с 11-20 (в любом порядке спуска или подъема). Но он возвращает сотрудников от 50 до 41. Почему?
Что я уже пробовал:
Я пробовал в google, все говорят о Views и TOP, но в моем случае нет никакого View.