2010-12-09 10 views
4

Ich habe Benutzerliste Tabelle, in meiner Listing-Seite gibt es Paginierung, so jetzt ich finde Sql, wenn Paginierung klicken, dh. wenn Klick 1 die ersten 10 Datensatz aus der Tabelle erhalten, wenn Klick Februar 11-20 Aufzeichnung zu erhalten, wenn Klick März 21-30 Aufzeichnung zu erhalten, wie die SQL aussehen,sql, um einen Eintrag aus dem Paging zu bekommen

Dank im Voraus

ich verwende Informix

db
+0

Diese Frage enthält einige nützliche Informationen für Informix: http://StackOverflow.com/Questions/1033729/Informix-Subqueries-with-first-option –

Antwort

8

Informix hat Klauseln analog, aber anders, LIMIT und OFFSET:

SELECT SKIP n LIMIT m ... 

Sie können FIRST anstelle von LIMIT verwenden.

Siehe die IDS 11.70 InfoCenter oder ähnliche Standorte für frühere Versionen von IDS.

1

Dieser Kommentar wurde geschrieben, bevor OP stellte er fest/sie eine Informix-DB

Sowohl MySQL und PostgreSQL unterstützt ein wirklich cooles Feature OFFSET genannt, dass in der Regel mit einer LIMIT-Klausel verwendet wird.

Die LIMIT-Klausel wird verwendet, um die Anzahl der in einer SQL-Anweisung zurückgegebenen Ergebnisse zu begrenzen. Also, wenn Sie 1000 Zeilen in einer Tabelle haben, wollen aber nur die ersten 10 zurückkehren, würden Sie so etwas tun:

SELECT column FROM table 
LIMIT 10 

Dies ist vergleichbar mit der TOP-Klausel auf Microsoft SQL Server. Die LIMIT-Klausel wird jedoch immer am Ende der Abfrage von MySQL und PostgreSQL ausgeführt.

Angenommen, Sie wollten die Ergebnisse 11-20 anzeigen. Mit dem Schlüsselwort OFFSET seine so einfach, wird die folgende Abfrage tun:

SELECT column FROM table 
LIMIT 10 OFFSET 10 

Dies macht es einfach, mit SQL Multi Seite Ergebnisse oder Paginierung zu codieren. Häufig werden alle Datensätze AUSGEWÄHLT und anschließend auf der Ebene des Anwendungsservers und nicht direkt in der Datenbank gefiltert. Wie Sie sich vorstellen können, führt dies auf der Datenbank zu einer viel besseren Performance.

Wenn Sie 21-30 Ergebnisse anzeigen möchten, verwenden Sie die folgende Abfrage:

SELECT column FROM table 
LIMIT 10 OFFSET 20 
+0

-1. Trotzdem ist diese Antwort nicht sehr nützlich, um das Problem zu lösen, das das OP zur Hand hat. Deine andere Antwort ist nützlicher, also gab ich das +1. –

+0

Es ist nicht nützlich im Kontext von Informix. Es ist gut zu wissen, ob man eine db benutzt, die die obige Syntax unterstützt: –

1

Nun, da Sie wies darauf hin, dass Sie verwenden, Informix, die LIMIT Klausel wird nicht funktionieren. Können Sie stattdessen Ihre Auswahl in ein Array platzieren und die gewünschten Daten aus dem Array abrufen?

Verwandte Themen