온도 테이블을 만들지 않고 Sybase에서 페이징을하려면 어떻게해야합니까? (Oracle Rownum 문제)
문제
Oracle에서는 일반적으로 페이징에 대해 이와 같은 쿼리입니다.
SELECT * FROM (SELECT *, rownum rid FROM TABLEA WHERE rownum <= #pageend#)
WHERE rid > #pagestart#
그러나 Sybase DBMS에는 "rownum"기능이 없습니다.
Sybase에서 쿼리를 정확히 동일하게 수행하려면 어떻게해야합니까?
나는 몇 가지 방법을 찾았다.
"RowCount"사용
RowCount 10을 설정하십시오
Tablea에서 *를 선택하십시오
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
제휴하지 않습니다 StackOverflow