我相信这在mysql中是可能的,但是sql server 2008怎么样?例如:
**ID Type**
11111 dgf-324-fhj
11111 sdg-654-fhd
22222 djg-234-dfh
23333 uoi-738-sdf
如果type是PK,并且假设我的查询返回第一行11111行,那么如何创建一个将我解析为下一行或上一行的SQL语句?任何帮助或指向正确的方向都会很棒。该计划是asp.net/c#/visual studio 2010,谢谢!
答案 0 :(得分:2)
请记住,表格表示无序行的集合。因此,除非您指定订单,否则“下一个”和“前一个”的概念没有任何意义。在您的示例中,除非您指定订单,否则不能保证给定的Select语句在dgf-324-fhj
之前返回说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
我还要提一下这种方法存在的问题。如果有人在查询第1行后插入一个成为“新”行2的新行,您将得到与预期不同的结果。
答案 1 :(得分:0)
请看这个关于分页的答案:What is the best way to paginate results in SQL Server
如果您想一次执行一行,那么您只需将RowNum过滤器一次更改为1。