2016-05-16 10 views
-1

Ich muss die ersten 1000 Zeilen einer Tabelle herausfinden, ohne Top- und Rowcount zu verwenden. Ich muss where-Klausel in meiner Abfrage verwenden. Die Abfrage sollte wie folgt aussehen:Wie finden Sie TOP N Zeilen in Sybase, ohne TOP und rowcount keywords zu verwenden?

select * from <table_name> where <condition>

Ich habe keine gute Spalte, die in where-Klausel verwendet werden können.

Auch ich kann keine neue Spalte hinzufügen.

+0

Und warum sind die Einschränkungen? –

+0

Was ist mit 'order by' und' limit 1000'? – Gangaraju

+0

Mögliches Duplikat von [Wie kann ich die Anzahl der in Sybase zurückgegebenen Ergebnisse begrenzen?] (Http://stackoverflow.com/questions/1587135/how-do-i-limit-the-amount-of-results-returned-in -sybase) –

Antwort

0

Die Verwendung von row_number mit einem Literalwert in der Reihenfolge nach ist möglicherweise die Lösung, nach der Sie suchen.

with n as (
    SELECT 
     neo.* 
     , ROW_NUMBER() OVER (ORDER BY (SELECT 100)) as [rn] 
    FROM <table_name> neo 
) 
SELECT 
    n.* 
FROM n 
WHERE n.[rn] <= 1000 -- first 1000 rows 
+0

Cant chnage die Select-Klausel auch. Einzig was ich eingeben kann, ist die Bedingung, die von der Anwendung nach "wo" hinzugefügt wird. – Neo

+0

@Neo Können Sie teilen, was die Spaltennamen Ihrer Tabellen sind, zusammen mit einigen Beispieldaten? Übrigens scheint es sehr merkwürdig, dass man die Bedingung erst nach dem WHERE eingeben kann ... warum ist das so? – GlennFriesen