Wie kann ich, ohne dass temporäre Tabelle Paging in Sybase tun? (Oracle rownum Ausgabe)
Frage
In Oracle, in der Regel, wie dies für Paging abfragen.
SELECT * FROM (SELECT *, rownum rid FROM TABLEA WHERE rownum <= #pageend#)
WHERE rid > #pagestart#
Es gibt jedoch keine "rownum" -Funktion in Sybase DBMS.
Wie kann ich diese Abfrage exactlly gleiche in Sybase?
ich einige Wege gefunden.
-
verwenden "rowcount"
gesetzt rowcount 10
select * from TABLEA
-
Verwendung Identität (stellen temporäre Tabelle)
SELECT *, ROWNUM = IDENTITY (8) in #TEMP VON TABLEA
SELECT * FROM #TEMP WHERE ROWNUM <# # Seite UND ROWNUM> = #pagestart #
DROP TABLE #TEMP
diese sind nicht das, was ich will.
rowcount wird auf Sitzungsebene festgelegt und ich möchte nicht, temporäre Tabelle machen.
Lösung
Wenn Sie eine eindeutige ID-Spalte auf Ihrer Tabelle Sie SELECT TOP verwenden könnte n
SELECT TOP 10 *
FROM tableA
WHERE id BETWEEN @start AND @end
Andere Tipps
Dies werden Sie alle der Ids , damit Sie sie in einer Auswahl wie "select * where id_column in (ids from query below)
" verwenden können,
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