0

我相信这在 mysql 中是可能的,但是 sql server 2008 呢?例如:

   **ID             Type**
   11111          dgf-324-fhj
   11111          sdg-654-fhd
   22222          djg-234-dfh
   23333          uoi-738-sdf

如果类型是 PK,假设我的查询返回第一行 11111,我如何创建一个 SQL 语句来解析我到下一行或上一行?任何帮助或指向正确方向的方法都会很棒。该程序是asp.net/c#/visual studio 2010,谢谢!

4

2 回答 2

2

请记住,表代表一组无序的行。因此,除非您指定订单,否则“下一个”和“上一个”的概念没有任何意义。在您的示例中,除非您指定订单,否则不能保证给定的 Select 语句返回 say dgf-324-fhjbefore 。sdg-654-fhd但是,让我们假设按类型排序我们可以使用这样的排名函数:

With OrderedItems As
    (
    Select Id, Type, Row_Number() Over ( Order By Type ) As Num
    From SourceData
    )
Select Id, Type
From OrderedItems
Where Num = 2

SQL 小提琴示例

我还要提一下这种方法存在问题。如果有人在您查询第 1 行后插入一个成为“新”行 2 的新行,您将得到与预期不同的结果。

于 2012-06-08T16:54:45.520 回答
0

看看这个关于分页的答案:What is the best way to pagate results in SQL Server

如果您想一次执行一行,那么您只需将 RowNum 过滤器一次更改为 1。

于 2012-06-08T15:34:12.713 回答