Można użyć row_number Microsoftu() do zdecydować które wiersze powrócić. Oznacza to, że nie jesteś ograniczony tylko do najlepszych wyników X, możesz wziąć strony.
SELECT *
FROM (SELECT row_number() over (order by UserID) AS line_no, *
FROM dbo.User) as users
WHERE users.line_no < 10
OR users.line_no BETWEEN 34 and 67
Trzeba gniazdo pierwotne zapytanie jednak, bo inaczej dostaniesz komunikat o błędzie informujący, że nie można robić, co chcesz w sposób prawdopodobnie powinien być w stanie w idealnym świecie .
Msg 4108, Level 15, State 1, Line 3
Windowed functions can only appear in the SELECT or ORDER BY clauses.
Warto również zauważyć, że jeśli chcesz wziąć 10 najlepszych wyników w Oracle, musisz napisać wybierz * z (wybierz * z zamówienia użytkowników według nazwy użytkownika) gdzie rownum <= 10 Rownum oblicza się najpierw, przed złożeniem zamówienia. – LukLed
@Lukled To samo jest prawdziwe, gdy używasz row_number() over() w mssql: http://stackoverflow.com/a/16610654/6910 – Jonathan