SQL select 仅单行数x

SQL select single row number x only

为了处理 VBA 中的 SQL 数据,我想使用一个循环 (For...Next) 从 SQL 数据库逐行读取。由于记录被删除,ID 列有空白。 table 看起来像这样的例子:

ID   Value
1    Peter
3    Paul
4    Mary
9    George

有四行我想运行

For i = 1 to 4
   SELECT ???
Next i

当然,“每个人”也有好处。

如果你想逐行阅读,你可以遍历结果集。但是如果你真的需要枚举值,你可以使用 row_number():

select row_number() over (order by id) as seqnum, t.*
from t;

seqnum 然后保证是一个从 1 开始没有间隙的递增值。

编辑:

如果您想 select 特定行,您 可以 row_number() 与子查询或 CTE 一起使用:

select t.*
from (select row_number() over (order by id) as seqnum, t.*
      from t
     ) t
where seqnum = 10;

但推荐的方法是 offset/fetch:

select t.*
from t
order by id 
offset 9 row fetch first 1 row only;

如果您想要 4 行,则使用 order bytop - 或者 fetch clause:

select top(4) t.*
from mytable t
order by id

或者:

select t.*
from mytable t
order by id
offset 0 rows fetch first 4 rows only

然后您可以在应用程序中循环访问结果集。

另一方面,如果您只需要第 4 行,则只需更改 fetch 子句:

select t.*
from mytable t
order by id
offset 3 rows fetch next 1 row only