2

在 Oracle 中,通常像这样查询分页。

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

但是,Sybase DBMS 中没有“rownum”函数。

如何在 Sybase 中进行完全相同的查询?

我找到了一些方法。

  1. 使用“行数”

    设置行数 10

    从 TABLEA 中选择 *

  2. 使用身份(制作临时表)

    从 TABLEA 中选择 *, ROWNUM=IDENTITY(8) 到 #TEMP

    SELECT * FROM #TEMP WHERE ROWNUM < #pageend# AND ROWNUM >= #pagestart#

    删除表#TEMP

这些不是我想要的。

行数设置在会话级别,我不想制作临时表。

4

2 回答 2

3

这将为您提供所有IDselect * 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
于 2012-02-29T15:03:28.403 回答
0

如果你的表上有一个唯一的 id 列,你可以使用 SELECT TOP n

SELECT TOP 10 *
FROM tableA
WHERE id BETWEEN @start AND @end
于 2009-08-05T02:53:59.517 回答