【发布时间】:2016-02-07 08:31:02
【问题描述】:
我试图找到限制选择查询返回值数量的标准方法,但在BNF 中找不到。每个 DBMS 似乎都定义了its own way。有标准方法吗?如果没有,为什么不值得标准化?
【问题讨论】:
-
this one 这里可能重复...
-
许多产品在 SQL 标准指定 FETCH FIRST 语法之前实现了自己的版本。
标签: sql
我试图找到限制选择查询返回值数量的标准方法,但在BNF 中找不到。每个 DBMS 似乎都定义了its own way。有标准方法吗?如果没有,为什么不值得标准化?
【问题讨论】:
标签: sql
它是标准化的。
SQL 标准定义了以下语法:
select *
from some_table
order by id
fetch first 42 rows only;
或者从与第一行不同的行开始:
select *
from some_table
order by id
offset 42
fetch first 42 rows only;
这是在 SQL:2008 中引入的
但是,并非每个 DBMS 都支持此标准。实际上,没有任何 DBMS完全支持标准中定义的所有内容。有些人比其他人更忽视标准。
According to Wikipedia 以下 DBMS 支持此功能:
【讨论】:
SELECT 声明的一部分。 FETCH 作为 data statement 的一部分出现在语法中,它是过程、触发器或游标的一部分,但不是基本 SELECT 的一部分。
fetch first...是在SQL:2008中添加的