Como posso fazer a paginação em Sybase sem fazer tabela temporária? (Edição rownum Oracle)

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

  •  22-07-2019
  •  | 
  •  

Pergunta

No Oracle, geralmente consulta como esta para paginação.

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

No entanto, não há nenhuma função "rownum" em Sybase DBMS.

Como posso fazer essa consulta exactlly mesmo no Sybase?

Eu encontrei algumas maneiras.

  1. uso "rowcount"

    set rowcount 10

    SELECT * FROM TABLEA

  2. uso de identidade (tabela temporária make)

    SELECT *, ROWNUM = IDENTIDADE (8) EM #TEMP DE TABLEA

    SELECT * FROM #TEMP ONDE ROWNUM <# pageend # E ROWNUM> = #pagestart #

    DROP TABLE #TEMP

estes não são o que eu quero.

rowcount está definido no nível da sessão e eu não quero criar tabela temporária.

Foi útil?

Solução

Se você tem uma coluna id único na sua mesa você poderia usar SELECT TOP n

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

Outras dicas

Isto lhe dará todo o ids para que você possa usá-los em uma escolha 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 em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top