假设一个表有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子句后,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 |
偏移量会跳过查询中指定的行数,而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子句跳过表中指定的所有行,而Fetch子句在offset子句之后返回前两行。在fetch子句中,可以根据用户要求使用FIRST和NEXT。必须使用Offset子句,而提取在查询中是可选的。