Ser*_*rev 2 postgresql offset-fetch
FETCH FIRSTPostgreSQL和PostgreSQL之间有什么区别FETCH NEXT?文档只是说
NEXT 获取下一行
FIRST 获取查询的第一行
这没什么解释。我创建了一个包含示例行的示例表,并执行
SELECT * from users
FETCH FIRST 2 ROWS ONLY;
Run Code Online (Sandbox Code Playgroud)
SELECT * from users
FETCH NEXT 2 ROWS ONLY;
Run Code Online (Sandbox Code Playgroud)
并得到完全相同的输出。它几乎就像 ifFETCH FIRST和FETCH NEXT只是同义词LIMIT(我读到,它不是 SQL 标准的一部分,与 不同FETCH [FIRST|NEXT])
如果两者相同,为什么文档不这么说?还是毕竟存在一些差异?
这个 Stack Overflow 答案意味着它们至少在某些 RDBMS 中可能以相同的方式运行,特别是在 MS Server 中
您链接的文档页面的命令与SELECT 语句中的和选项FETCH不同
。后者的描述如下:FETCH FIRSTFETCH NEXTSELECT
获取{首先| 下一个 } [ 计数 ] { 行 | 行 } { 仅 | WITH TIES }
[...]
ROW 和 ROWS 以及 FIRST 和 NEXT 都是干扰词,不影响这些子句的效果
因此,在这种情况下,FIRST 和 NEXT 之间确实没有区别。
其行为与 LIMIT 相同,但 LIMIT 无法自动扩展计数以包含与最后一行具有相同排名的所有行,这与带有 WITH TIES 选项的 FETCH 不同。
对于游标的 FETCH 命令,FETCH NEXT 和 FETCH FIRST 的行为是不同的。例如以下语句序列:
BEGIN;
DECLARE c SCROLL CURSOR FOR select generate_series(1,5) AS n;
FETCH FIRST c;
FETCH NEXT c;
FETCH FIRST c;
CLOSE C;
COMMIT;
Run Code Online (Sandbox Code Playgroud)
显示FETCH FIRST c返回结果的第一行:
FETCH FIRST c;
n
---
1
(1 row)
FETCH NEXT c;
n
---
2
(1 row)
FETCH FIRST c;
n
---
1
(1 row)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
776 次 |
| 最近记录: |