2013-06-23 17 views
6

Czy w jaki sposób mogę wybrać określoną liczbę wierszy w SQL Server? Podobnie jak w przypadku pierwszego zapytania, chciałem uzyskać wiersze 1-5, a następnie kolejne wiersze 6-10, a następnie kolejne? Z góry dziękuję za odpowiedzi :)Wybieranie określonego numeru wiersza w sql

Odpowiedz

14

dla SQL Serwer 2005+ (zestaw @ startartRow i @endRow):

SELECT OrderingColumn 
FROM (
    SELECT OrderingColumn, ROW_NUMBER() OVER (ORDER BY OrderingColumn) AS RowNum 
    FROM MyTable 
) AS MyDerivedTable 
WHERE MyDerivedTable.RowNum BETWEEN @startRow and @endRow 

Przykładowa fraza SQL : http://sqlfiddle.com/#!3/b4b8c/4

+0

Witam! Twój kod działa! Dziękuję Ci bardzo! Ale można to zrobić w jednym zapytaniu? Trzy różne kolumny z różnymi starterami i endrowami tylko z jednej tabeli w jednym zapytaniu? Wygląda to tak: C1 C2 | | | C3 aa bb cc dd | | | ff ee gg | HH – Brenelyn

+0

@Brenelyn żadnych zmartwień. O twoim pytaniu: Dlaczego miałbyś mieć różne początki i cele? Czy możesz rozwinąć w innym pytaniu, a następnie wkleić link tutaj, proszę? –

+0

Omówiłem tutaj, chcę, chcę zrobić. [link] (http://stackoverflow.com/questions/17269078/subquery-returns-more-than-1-value-sql-error-on-multiple-selection) – Brenelyn

7

dla SQL Server 2012, spróbuj tego (wystarczy ustawić offset)

SELECT * 
FROM  MyTable 
ORDER BY OrderingColumn ASC 
OFFSET 0 ROWS 
FETCH NEXT 5 ROWS ONLY 

OFFSET:
Określa liczbę wierszy, które należy pominąć przed jego rozpoczęciem, aby powrócić wierszy z wyrażenia zapytania.

FETCH NEXT:
określa liczbę wierszy powrotu po klauzula OFFSET został przetworzony.

Definicje OFFSET i FETCH NEXT pochodzą z here.

Zapytanie 1:
Przesunięcie 0 => 1-5

Zapytanie 2:
offsetowy 5 => 6-10 itp

przykład SQL skrzypacz: http://sqlfiddle.com/#!6/b4b8c/2

+0

** SQL ** = język zapytania, ** SQL Server ** = produkt Microsoft RDBMS –

+0

Dziękuję bardzo! Przepraszam, nie wiem jak nazwać to tak przepraszam za powielające go na inne pytania :) – Brenelyn

+0

@Brenelyn Bez problemu. Pamiętaj, aby ustawić przesunięcie zgodnie z bieżącą stroną. Zapytanie 1 => Przesunięcie 0 Zapytanie 2 => Przesunięcie 5 itd. –

Powiązane problemy