No se si hay otras soluciones pero esta no parece complicada.
Si partimos de que simpre tenemos que usar algun campo de ordenación puesto que en las bases de datos relacionales el orden de insercion de los registros no debe importar, por eso hay que escoger siempre un criterio de ordenación.
Código:
select top M * from
(select top N+M ColumnA, ColumnB ... from tablaX order by fld) a
order by fld desc
En la subconsulta selecionamos los N+M registros ordenados ascendentemente por "fld", en la principal seleccionamos de los anteriores los M primeros pero ordenados descendentemente por "fld", con lo que conseguimos lo mismo que si usaras LIMIT N, M.
Con numeros
Código:
Select top 5 * from
(select top 20 ColumnA, ColumnB ... from tablaX order by fld)
order by fld desc;
Esto te da lo mismo que LIMIT 16, 20 bueno del 16 al 20
Un engorro pero no todo es ANSI SQL.
Quim