【发布时间】:2013-01-18 00:31:06
【问题描述】:
通过使用 LIMIT x,y 子句,使用 mysql 或 postgresql 很容易进行分页。 但是,Oracle 或 MSSQL 不支持它。任何关于为什么的见解?
我不是要求替代方案,我知道它们(顺便说一句,SQL-SERVER 的 TOP 函数不提供相同的功能)。我想知道是否有任何技术或许可原因,为什么 LIMIT x,y 子句对 Web 开发(分页)非常有用,并且在 MySQL 和 PostgreSQL 中具有非常干净和简单的语法,并且具有复杂的语法,有时涉及子查询, 在其他 RDBMS 中。
【问题讨论】:
-
因为它们都实现了自己的 SQL 标准变体。这是它们之间最大的区别之一。
-
我无法回答为什么,但您可以使用 TOP。
-
LIMIT不是 ANSI 标准 SQL,并且该标准没有指定任何等效功能。 IIRC 它最近添加了与 PostgreSQL 相似但不完全相同的语法,但我手边没有参考。 -
子句 LIMIT 和 OFFSET 是 PostgreSQL 特有的语法,也被 MySQL 使用。 SQL:2008 标准引入了子句 OFFSET ... FETCH {FIRST|NEXT} ... 用于相同的功能 - PostgreSQL 也支持。
标签: mysql sql sql-server oracle postgresql