получите определенный диапазон строк в таблице SQL Server

Это будет рабочий код

#include <stdio.h>

    void funct(int[5]);
    int main()
    {
         int Arr[5]={1,2,3,4,5};
         int j = 0;

        funct(Arr);

        for(j=0;j<5;j++)
        printf("%d",Arr[j]);
    }
    void funct(int p[5]){
        int i,j;
        for(i=6,j=0;i<11;i++,j++)
            p[j]=i;
    }
.
7
задан George2 21 June 2009 в 12:58
поделиться

4 ответа

Вы можете для этого используйте ROW_NUMBER в TSQL (начиная с 2005 г.):

SELECT  ID, Foo, Bar
FROM     (SELECT  ROW_NUMBER() OVER (ORDER BY ID ASC) AS Row,
          ID, Foo, Bar
FROM    SomeTable) tmp
WHERE   Row >= 50 AND Row <= 100

Или с LINQ-to-SQL и т. д .:

var qry = ctx.Table.Skip(50).Take(50); // or similar
15
ответ дан 6 December 2019 в 08:16
поделиться

По сути, ваш лучший выбор в SQL Server 2005 и 2008 - CTE - Common Table Expression - с функцией ROW_NUMBER () в нем - что-то вроде этого:

WITH MyOrders AS
(
  SELECT
    OrderID,
    OrderDescription,
    ROW_NUMBER() OVER (ORDER BY OrderID) as 'RowNum'
  FROM YourOrders
)
SELECT * FROM MyOrders
WHERE RowNum BETWEEN 50 AND 100

Но это требует полезного и подходящее предложение ORDER BY , и упорядочивание по GUID - действительно плохая идея. DATETIME или постоянно увеличивающийся ID было бы лучше.

Marc

4
ответ дан 6 December 2019 в 08:16
поделиться

Попробуйте это, результат будет упорядочен по столбцу OrderID . Замените MyTable своей таблицей.

SELECT * 
FROM ( SELECT *, ROW_NUMBER() OVER (ORDER BY OrderID) AS row FROM MyTable) a 
WHERE row > 50 AND row <= 100

Выбранные строки от 50 до 100 , но обратите внимание, что 50-я строка не включена в результат.

2
ответ дан 6 December 2019 в 08:16
поделиться

SELECT * FROM (SELECT *, ROW_NUMBER () OVER (ORDER BY OrderId) как строка FROM Orders) a WHERE строка> 5 и строка <= 10

1
ответ дан 6 December 2019 в 08:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: