什么是限制返回值数量的SQL标准方法?

cev*_*ing 2 sql

我试图找到限制选择查询的返回值的标准方法,但我无法在BNF中找到它.每个DBMS似乎都定义了自己的方式.有标准的方法吗?如果没有,为什么不值得标准化呢?

a_h*_*ame 7

标准化的.

SQL标准定义了以下语法:

select * 
from some_table
order by id
fetch first 42 rows only;
Run Code Online (Sandbox Code Playgroud)

或者从与第一行不同的行开始:

select * 
from some_table
order by id
offset 42
fetch first 42 rows only;
Run Code Online (Sandbox Code Playgroud)

这是在SQL:2008中引入的

然而,并非每个DBMS都支持此标准.实际上,没有DBMS 完全支持标准中定义的所有内容.有些人比其他人更多地忽视标准.

根据维基百科,以下DBMS支持此:

  • PostgreSQL(8.4)
  • Oracle 12c
  • IBM DB2
  • SQL Server 2012
  • HSQLDB 2.0
  • H2
  • CA DATACOM/DB 11
  • Sybase SQL Anywhere
  • EffiProz