¿Cómo puedo hacer paginación en Sybase sin hacer una tabla temporal? (problema del oráculo rownum)

StackOverflow https://stackoverflow.com/questions/1225889

  •  22-07-2019
  •  | 
  •  

Pregunta

En Oracle, generalmente se realiza una consulta como esta para paginación.

SELECT * FROM (SELECT *, rownum rid  FROM TABLEA WHERE rownum <= #pageend#)
WHERE rid > #pagestart#

Sin embargo, no hay & "; rownum &"; funcionar en Sybase DBMS.

¿Cómo puedo hacer esa consulta exactamente igual en Sybase?

Encontré algunas formas.

  1. use " rowcount "

    establecer el recuento de filas 10

    seleccione * de TABLEA

  2. usar identidad (crear tabla temporal)

    SELECT *, ROWNUM = IDENTITY (8) INTO #TEMP FROM TABLEA

    SELECCIONAR * DE #TEMP WHERE ROWNUM < # pageend # AND ROWNUM > = # pagestart #

    TABLA DE GOTAS #TEMP

estos no son lo que quiero.

rowcount se establece en el nivel de sesión y no quiero hacer una tabla temporal.

¿Fue útil?

Solución

Si tiene una columna de identificación única en su tabla, puede usar SELECT TOP n

SELECT TOP 10 *
FROM tableA
WHERE id BETWEEN @start AND @end

Otros consejos

Esto le dará todos los identificadores para que pueda usarlos en una selección como " select * where id_column in (ids from query below) "

select top 10 id_column from trade
where @whereClause
and id_column > 0  //keep replacing this with the max id from the result set
order by id_column
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top