2012-03-28 7 views
2

Ich versuche, eine Abfrage zu erstellen, die dies tun wird: Sagen wir zum Beispiel habe ich 100 Datensätze in der Tabelle. Ich habe .net Formular, das die Abfrage aufruft. Ich habe einen Querystring-Parameter pageIndex, etwas wie http://mysite.com?id=2. Was ich jetzt tun möchte, ist, wenn id = NULL, dann die erste Menge von Datensätzen von dieser Tabelle, die ID von 1 bis 20 hat, bedeutet von 1 bis 20, wenn ID = 2 dann die zweite Menge von recordw, aus Zeile 20 bis 40, wenn ID = 3, dann die dritte Menge von Datensätzen, dh Datensätze von 40 bis 60, von dieser Tabelle erhalten.
Ich möchte wissen, ob das möglich ist. Vielen Dank im Voraus, Lazialesql Abfrage Auswahl

+1

Wie sieht Ihre aktuelle Seite aus, wie sieht Ihr Datenbankcode jetzt aus? –

+0

[Paging in SQL Server] (http://www.codeguru.com/csharp/.net/net_data/article.php/c19611/Paging-in-SQL-Server-2005.htm) –

Antwort

0

Wenn Sie es machen, wie Sie es sagen, und die IDs sind in Zeile 1-100 Sie

@Page tun können, ist die Seitenzahl (Basis auf 0)

SELECT TOP 20 * FROM MyTable WHERE (ID > @Page*20) ORDER BY ID 

Wenn Sie wollen den Paging-Stil von MS SQL und die Ide Sie tun können, nicht

WITH NewTable AS (SELECT *, ROW_NUMBER() OVER (ORDER BY ID) AS RowNumber FROM MyTable) 
SELECT TOP 20 * FROM NewTable WHERE (RowNumber > @Page*20) 

Reference in Zeile verwenden: http://msdn.microsoft.com/en-us/library/ms186734.aspx

http://msdn.microsoft.com/en-us/library/ms175972.aspx

0
SELECT col1, col2 
FROM (
    SELECT col1, col2, ROW_NUMBER() OVER (ORDER BY ID) AS RowNum 
    FROM MyTable 
) AS MyDerivedTable 
WHERE MyDerivedTable.RowNum BETWEEN @startRow AND @endRow 

von Row Offset in SQL Server, erstes Ergebnis in Google über "mssql Limit Offset" Suche Warteschlange genommen.

+0

Die Frage fragt nicht nach MySQL. Wie machen Sie das in SQL Server? –

+0

Die Antwort wurde aktualisiert. – iehrlich