2008-09-08 7 views
4

In Oracle kann die Anzahl der in einer beliebigen Abfrage zurückgegebenen Zeilen durch Filtern auf die Spalte "virtuell" rownum begrenzt werden. Betrachten Sie das folgende Beispiel, das maximal 10 Zeilen zurückgibt.Wie begrenzt man die Ergebnismenge für beliebige Abfragen in Ingres?

SELECT * FROM all_tables WHERE rownum <= 10

Gibt es eine einfache, generische Möglichkeit, etwas ähnliches in Ingres zu tun?

Antwort

6

Offenbar meine Antwort ändern. "Limit 10" arbeitet für MySql und andere, verwendet Ingres

Select First 10 * from myTable 

Ref

2

select * from myTable Grenze 10 nicht funktioniert.

Haben eine mögliche Lösung entdeckt:

 
    TIDs are "tuple identifiers" or row addresses. The TID contains the 
    page number and the index of the offset to the row relative to the 
    page boundary. TIDs are presently implemented as 4-byte integers. 
    The TID uniquely identifies each row in a table. Every row has a 
    TID. The high-order 23 bits of the TID are the page number of the page 
    in which the row occurs. The TID can be addressed in SQL by the name 
    `tid.' 

So können Sie die Anzahl der Zeilen begrenzen zurück, wie etwas mit kommen:

select * from SomeTable where tid < 2048

Das Verfahren ist etwas ungenau in der Anzahl der Zeilen, die es zurückgibt . Für meine Anforderung ist das jedoch in Ordnung, da ich nur die Zeilen begrenzen möchte, die aus einem sehr großen Ergebnissatz zurückkommen, um das Testen zu beschleunigen.

0

Hallo Craig. Es tut mir leid, ich habe einen Ninja Edit gemacht. Nein, Limit 10 funktioniert nicht, ich habe mich geirrt, dass es Standard-SQL ist, das von allen unterstützt wird. Ingres verwendet (laut doc) "First", um das Problem zu lösen.

0

Hey Ninja Editor aus Stockholm! Keine Sorge, habe bestätigt, dass "first X" gut funktioniert und eine viel bessere Lösung als ich gefunden habe. Vielen Dank!

Verwandte Themen