DB2 rows limitieren

So., 01/07/2012 - 20:42
Body
In DB2 existiert das SQL-Schlüsselwort LIMIT nicht. Die folgende Abfrage nach den Zeilen 50 bis 100 funktioniert beispielsweise nicht:
  1. SELECT * FROM table t WHERE t.x='value' ORDER BY t.o DESC LIMIT 50,100
Man muss sich in DB2 über die Funktion rownumber() aushelfen und eine geschachtelte query absetzen:
  1. SELECT * FROM (SELECT t.*, rownumber() over (ORDER BY t.o DESC) as rn FROM table t) AS x WHERE t.x='value' AND rn BETWEEN 50 AND 100 ORDER BY t.o DESC
Durch over kann man in der Klammer mittels ORDER BY eine Sortierreihenfolge festlegen (meistens die gleiche wie in der äußeren query).
Webdevelopment
Add new comment
The content of this field is kept private and will not be shown publicly.

Plain text

  • Allowed HTML tags: <a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <drupal-entity data-*>
  • Web page addresses and email addresses turn into links automatically.
  • Lines and paragraphs break automatically.