온도 테이블을 만들지 않고 Sybase에서 페이징을하려면 어떻게해야합니까? (Oracle Rownum 문제)

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

  •  22-07-2019
  •  | 
  •  

문제

Oracle에서는 일반적으로 페이징에 대해 이와 같은 쿼리입니다.

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

그러나 Sybase DBMS에는 "rownum"기능이 없습니다.

Sybase에서 쿼리를 정확히 동일하게 수행하려면 어떻게해야합니까?

나는 몇 가지 방법을 찾았다.

  1. "RowCount"사용

    RowCount 10을 설정하십시오

    Tablea에서 *를 선택하십시오

  2. Identity 사용 (임시 테이블 만들기)

    *, rownum = Identity (8)를 #temp from tablea로 선택하십시오.

    rownum < #pageend #및 rownum> = #pagestart #에서 *에서 *를 선택하십시오.

    드롭 테이블 #temp

이것들은 내가 원하는 것이 아닙니다.

RowCount는 세션 수준으로 설정되어 있으며 임시 테이블을 만들고 싶지 않습니다.

도움이 되었습니까?

해결책

테이블에 고유 한 ID 열이 있으면 선택 상단 N을 사용할 수 있습니다.

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

다른 팁

이것은 당신에게 모든 것을 줄 것입니다 이드 그래서 당신은 select와 같이 사용할 수 있습니다.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
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top