[DB2] Die ersten X-Datensätze einer Abfrage anzeigen

Thomas Darimont

Erfahrenes Mitglied
Hallo,

Hier mal ein Beispiel wie man für DB 2 die ersten X-Datensätze einer Abfrage ausgeben kann:

Standard SQL:

SQL:
select 
* 
from 
    (
     select 
         ROW_NUMBER() over (order by someUniqeId asc) as rownumber,
         someUniqeId,
         someOtherField
         from 
         someSchema.someTable
         ) as bubu 
where 
rownumber <=10

Spezielle DB2 Syntax:
SQL:
select * from someSchema.someTable fetch first 10 rows only

Bei Mysql/Postgresql gibts dazu das keyword 'Limit' und bei Oracle kann man über die
Pseudospalte rownum gehen. Bei MS SQLServer sagt man gibts das Keyword 'Top'

Gruß Tom
 
Aber wie liest man von einem Startpunkt x Datensätze aus :(


EDIT:

Zumindest für Version 8.2 existiert ein grausamer Workaround:
Code:
select * from (select a.*,rownumber over() as row from <tablename> where <where clause>) as tab where row between <start> and <end>

Hier liest die DB2 alle Datensätze aus <tablename>, übergibt sie an das äußere Select und gibt dann die Datensätze zwischen <start> und <end> zurück.

Grausam schrieb ich, denn wenn man eine Tabelle mit 30000 Datensätzen hat ...- muß ich mehr sagen? ;)

Mir wurde von unserem DB2-Guru mitgeteilt, das DB2 V8 keine Möglichkeit zum Zurückgeben eines Bereichs kennt wie z.B. Mysql, Oracle,...


Steffen
 
Zuletzt bearbeitet:
Zurück