ruft einen bestimmten Bereich von Zeilen in einer SQL Server-Tabelle ab

7

Ich habe eine Tabellenstruktur wie (OrderID [uniqueidentifier], OrderDescription [nvarchar]), ich benutze ADO.Net + C # + VSTS 2008 + SQL Server 2008. Die Tabelle ist groß, und ich möchte den Client mir geben lassen zwei Eingaben, beginnen Bereichsindex und Endbereichsindex, und ich werde bestimmte Zeilen der Tabelle zurückgeben, die in dem Bereich (zwischen Beginn Bereich Index und Endbereich Index) ist.

Zum Beispiel, wenn der Client mir 50, 100 eingibt, und ich möchte die 50. Zeile bis zur 100. Zeile zurückgeben.

danke im voraus, George

    
George2 21.06.2009, 12:58
quelle

4 Antworten

15

Sie können ROW_NUMBER in TSQL (ab 2005) dazu verwenden:

%Vor%

Oder mit LINQ-to-SQL usw.:

%Vor%     
Marc Gravell 21.06.2009 13:04
quelle
4

Im Grunde ist Ihre beste Wette in SQL Server 2005 und 2008 ein CTE - Common Table Expression - mit einer ROW_NUMBER () - Funktion - etwa so:

%Vor%

Aber das erfordert eine nützliche und geeignete ORDER BY -Klausel, und das Bestellen durch eine GUID ist wirklich keine gute Idee. DATETIME oder eine ständig steigende ID wäre am besten.

Marc

    
marc_s 21.06.2009 13:01
quelle
2

Probieren Sie dies aus, das Ergebnis wird nach der Spalte OrderID sortiert. Ändern Sie MyTable mit Ihrer Tabelle.

%Vor%

Die ausgewählten Zeilen sind von 50 bis 100 . Beachten Sie jedoch, dass die 50. Zeile nicht im Ergebnis enthalten ist.

    
kiewic 21.06.2009 13:07
quelle
1

SELECT * FROM (SELECT *, ROW_NUMBER () OVER (ORDER BY OrderId) als Zeile FROM Bestellungen) a WHERE Zeile & gt; 5 und Zeile & lt; = 10

    
balint 21.06.2009 13:02
quelle

Tags und Links