2

Oracleでは、通常、このようにページングをクエリします。

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

ただし、SybaseDBMSには「rownum」関数はありません。

そのクエリをSybaseでまったく同じようにするにはどうすればよいですか?

私はいくつかの方法を見つけました。

  1. 「行数」を使用する

    行数10を設定

    TABLEAから*を選択

  2. IDを使用(一時テーブルを作成)

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

    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列がある場合は、SELECTTOPnを使用できます。

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