2013-06-25 13 views
0

我試圖從Progress 9.1D09數據庫中提取數據。我知道這不是Progress的最新版本,但升級不是一種選擇。該數據庫被一個垂死的程序使用,我正在將數據轉移到其後繼者。如何限制Progress 9.1D09中的選擇結果行?

一張桌子有162000行。我想要使​​用少量的行。

在SQL Server中,我會將我的查詢更改爲「select top 100 * from ...」。在MySQL中,我會做「select * from ... limit 0,100」。

到目前爲止,這些語法都沒有工作,並且搜索正確的語法都失敗了。

如何限制使用SQL的源數據中的行數?

+0

我最終只使用了where子句。 – cja

回答

1

規則#1 - 進展不是SQL。 Progress支持SQL-92接口,並且還嵌入了SQL-89語法 - 但SQL不是Progress DB的本地語言。

如果您使用的是嵌入式SQL-89,則不支持TOP。嵌入式SQL通過4GL引擎訪問。如果您不使用ODBC或JDBC,則可能嘗試使用嵌入式SQL-89。如果語法如:

FOR EACH customer NO-LOCK: 
    DISPLAY customer. 
END. 

然後你使用的是4GL,因此嵌入式SQL-89。

一個4GL的解決方案可能是這樣的:

Getting first 100 records from the table in Progress OpenEdge database (e.g. SELECT TOP 100..)

如果您使用的是SQL-92通過ODBC驅動程序 - 在10.1B

​​

某個時候加入TOP支持所以,你在v9上運氣不佳。

0

你可以嘗試ROWNUMBER像

SELECT FirstName, LastName, ROW_NUMBER() 
    OVER (ORDER BY PostalCode) AS 'RowNumber' 
    WHERE RowNumber BETWEEN(4,100) 
+0

查詢中沒有表名? – cja

+0

我剛給你一個想法,SELECT姓氏,姓氏,ROW_NUMBER() OVER(ORDER BY PostalCode)AS'RowNumber'from tablename WHERE RowNumber BETWEEN(4,100):-) –