2013-06-23 62 views
6

有什麼辦法可以在SQL Server中選擇指定的行數?就像我的第一個查詢一樣,我想要得到1-5行,然後是6-10行,然後呢?謝謝你提前爲你的答案:)在sql中選擇特定的行號

回答

14

對於SQL Server 2005+(set @startRow and @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 

SQL小提琴示例:http://sqlfiddle.com/#!3/b4b8c/4

+0

嗨!你的代碼有效!非常感謝你!但是可以在一個查詢中完成多項工作?一個查詢中只有一張桌子上有三種不同的起始和結束的列? 它看起來像這樣: C1 | C2 | C3 AA | BB | CC DD | EE | FF GG | HH – Brenelyn

+0

@Brenelyn無後顧之憂。關於你的問題:你爲什麼會有不同的啓動和注射?你能否詳細說明另一個問題,然後在這裏粘貼鏈接? –

+0

我在這裏討論想要做的事情。 [link](http://stackoverflow.com/questions/17269078/subquery-returns-more-than-1-value-sql-error-on-multiple-selection) – Brenelyn

7

對於SQL Server 2012,試試這個(簡單地設置偏移)

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

OFFSET
指定它開始返回行之前的行跳過的次數來自查詢表達式。

FETCH NEXT
指定在處理OFFSET子句後要返回的行數。

OFFSETFETCH NEXT的含義是自here

查詢1:
偏移0 => 1-5

問題2:
偏移5 => 6-10等

SQL撥弄例如:http://sqlfiddle.com/#!6/b4b8c/2

+0

** SQL ** =查詢語言,** SQL Server ** = Microsoft RDBMS產品 –

+0

非常感謝!對不起,我不知道該叫什麼,所以很抱歉讓它重複到其他問題:) – Brenelyn

+0

@Brenelyn沒問題。只要確保根據當前頁面設置偏移量即可。 查詢1 =>偏移量0 查詢2 =>偏移量5 等 –