📜  MS SQL Server 中的偏移获取

📅  最后修改于: 2021-09-08 15:48:23             🧑  作者: Mango

假设一个表有 30 行。用户想要提取最后 10 行的列表并跳过最上面的行。为了使工作更容易,查询中使用了 offset-fetch 子句。

句法 :

order by column_list[ASC|DESC]
Offset offset_row count{ROW|ROWS}
Fetch{FIRST|NEXT} fetch row_count {ROW|ROWS} only

语法分析:

  • Order by 子句必须与 offset-fetch 子句一起使用,否则会导致错误。 ASC 从升序到降序排列行,而 DESC 从降序到升序排列行。
  • Offset 跳过表中指定的行数。
  • 在使用 offset 子句后,Fetch 返回行数。它返回指定的行数。
  • FIRST 返回偏移后表开头的行数,而 NEXT 返回第一组行之后的连续行。

例子 –


表 –学生

Roll number Name Course
111 Riya CSE
112 Apoorva ECE
113 Mina Mech
114 Rita Biotechnology
115 Veena Chemical
116 Deepa EEE

如果用户想跳过前两行并返回其余的行,则查询如下:

select name, rollnumber, course
from student 
order by rollnumber ASC
offset 2 ROWS

输出 –

Roll number Name Course
113 Mina Mech
114 Rita Biotechnology
115 Veena Chemical
116 Deepa EEE

Offset 跳过查询中指定的行数,而 order by ASC 从升序到降序排列行。如果用户想跳过前 6 行并获取下一行,则查询如下:

select name, rollnumber, course 
from student
order by roll number ASC
offset 6 ROWS
fetch FIRST 2 ROWS ONLY

输出 –

Roll number Name Course
117 Vani Mech
118 Megha ECE

Offset 子句跳过 table 中指定的所有行,而Fetch 子句返回 offset 子句后的前两行。在fetch子句中,可以根据用户的要求使用FIRST和NEXT。 Offset 子句是必须使用的,而 fetch 在查询中是可选的。