title image


Smiley Rückgabebegrenzung in unterschiedlichen Systemen
LIMIT wird in MySQL für diesen Zweck verwendet:



MS-SQL, Access, Sybase:

SELECT TOP 20 * FROM tabelle;



MySQL, PostGRES:

SELECT * FROM tabelle LIMIT 20;



ORACLE:

SELECT * FROM tabelle WHERE ROWNUM <= 20;



DB/2:

ab DB/2 V7

SELECT * FROM tabelle FETCH FIRST N ROWS ONLY;



Will man sich ein "Hintertürchen" offenhalten und zwar theoretisch

alle Zeilen zurückbekommen, aber in den meisten Fällen nur eine

gewisse Anzahl auch wirklich fetchen, dann kann man dieses

Konstrukt verwenden:



SELECT * FROM tabelle OPTIMIZE FOR N ROWS;



Der Optimizer errechnet den Plan dann so, dass die ersten N Zeilen

möglichst schnell ermittelt sind. Ähnliche dem /*+ FIRST_ROWS_N */

Hint unter Oracle.



Andere Methode: Correlated Subquery



SELECT S1,S2,S3,...

FROM T1 A

WHERE N › (SELECT COUNT(*)

FROM T1 B

WHERE A.S1 < B.S1

AND B.S1 IS NOT NULL)

ORDER BY A.S1 DESC;



Die Vorschläge für SYBASE und DB/2 stammen von Ruebenthal und Dimitri



diu vive floreque.
Spockus

erreicht am 04.03.2008 09:47:23

geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: