我正在尝试从Progress 9.1D09数据库中提取数据。我知道这不是Progress的最新版本,但升级不是一种选择。该数据库由一个垂死的程序使用,我正在将数据移动到其后继者。
一个表有162000行。我想使用少量行。
在SQL Server中,我会将查询更改为“从...中选择前100 *”。在MySQL中我会做“select * from ... limit 0,100”。
到目前为止,这些语法都没有工作,谷歌搜索正确的语法使我失望。
如何使用SQL限制源数据中的行数?
答案 0 :(得分: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..)
如果您通过ODBC驱动程序使用SQL-92,那么有时会在10.1B中添加TOP支持
http://knowledgebase.progress.com/articles/Article/P13258
所以你对v9运气不好。
答案 1 :(得分:0)
您可以尝试类似
的rownumberSELECT FirstName, LastName, ROW_NUMBER()
OVER (ORDER BY PostalCode) AS 'RowNumber'
WHERE RowNumber BETWEEN(4,100)