2015-11-06 74 views
2

我试图找到标准的方式来限制选择查询的返回值的数量,但我找不到它在BNF。每个DBMS似乎都定义了its own way。有没有标准的方法?如果没有,为什么不值得将其标准化呢?什么是限制返回值数量的SQL标准方法?

+0

[这一个](可能的重复http://stackoverflow.com/questions/595123/is-there-an-ansi-sql-alternative-to-the- mysql-limit-keyword)... –

+0

许多产品在SQL标准指定FETCH FIRST语法之前实现了自己的版本。 – jarlh

回答

7

标准化。

SQL标准定义的语法如下:

select * 
from some_table 
order by id 
offset 42 
fetch first 42 rows only; 

这在SQL介绍::

select * 
from some_table 
order by id 
fetch first 42 rows only; 

可选地在不同的行比第一个开始2008

然而不是每个DBMS都支持这个标准。实际上没有DBMS 完全支持标准中定义的所有内容。有些人比其他人更忽视标准。

According to Wikipedia以下DBMS支持这一:

  • 的PostgreSQL(8.4)
  • 甲骨文12C
  • IBM DB2
  • SQL Server 2012的
  • HSQLDB 2.0
  • H2
  • CA DATACOM/DB 11
  • Sybase SQL Anywhere的
  • EffiProz
+0

Mimer SQL也支持它。 – jarlh

+0

MS SQL Server 2012也支持OFFSET/FETCH。您可以在这里阅读有关限制行的标准和特定于供应商的方式:https://en.wikipedia.org/wiki/Select_(SQL)#Limiting_result_rows –

+0

维基百科列表现在已更新... – jarlh

相关问题