假设一个表有 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 在查询中是可选的。