2013-02-02 67 views
-3

通過使用LIMIT x,y子句,可以很容易地使用mysql或postgresql進行分頁。 但是它不受Oracle或MSSQL的支持。任何見解爲什麼?我不是要求替代品,我知道他們(BTW SQL服務器的TOP功能不提供相同的功能)。我想知道是否存在任何技術或許可原因,爲什麼LIMIT x,y子句對於Web開發(分頁)非常有用,並且在MySQL和PostgreSQL中具有非常乾淨和簡單的語法具有複雜的語法,有時涉及子查詢,在其他RDBMS中。爲什麼SQL Server中不支持LIMIT子句?

+0

因爲他們都實現了自己的SQL標準變體。這是他們之間最大的區別之一。 –

+0

我無法回答爲什麼,但你可以使用TOP。 –

+0

LIMIT不是ANSI標準SQL,並且該標準沒有指定任何等效的功能。 IIRC最近增加了與PostgreSQL類似但不完全相同的語法,但我沒有提及引用。 –

回答

2

MS SQL ServerTOP (n)條款。對於Oracle,您可以使用ROWNUM。 來自實例SQL Server

SELECT TOP 5 * FROM Table 

您可以ORDER BY clause

SELECT TOP 5 * FROM Table ORDER BY col1 

也用它從Oracle

SELECT * FROM Table WHERE ROWNUM <= 5 

Oracle

SELECT * FROM 
(SELECT * FROM Table ORDER BY col1) A WHERE ROWNUM <= 5