Sql 如何限制正在进行的选择结果行9.1D09?

Sql 如何限制正在进行的选择结果行9.1D09?,sql,progress-db,Sql,Progress Db,我正在尝试从Progress 9.1D09数据库中提取数据。我知道这不是Progress的最新版本,但升级不是一个选项。数据库被一个垂死的程序使用,我正在将数据移动到它的后续程序 一个表有162000行。我想处理少量行 在SQL Server中,我会将查询更改为从…中选择前100个*。。。。在MySQL中,我会从。。。限制0100 到目前为止,这些语法都不起作用,谷歌搜索正确的语法也让我失望 如何使用SQL限制源数据中的行数?您可以尝试类似的行数 SELECT FirstName, LastNa

我正在尝试从Progress 9.1D09数据库中提取数据。我知道这不是Progress的最新版本,但升级不是一个选项。数据库被一个垂死的程序使用,我正在将数据移动到它的后续程序

一个表有162000行。我想处理少量行

在SQL Server中,我会将查询更改为从…中选择前100个*。。。。在MySQL中,我会从。。。限制0100

到目前为止,这些语法都不起作用,谷歌搜索正确的语法也让我失望


如何使用SQL限制源数据中的行数?

您可以尝试类似的行数

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

规则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解决方案可能如下所示:

如果您通过ODBC驱动程序使用SQL-92,则在10.1B中添加了TOP支持


因此,您在v9上运气不好。

我刚刚给了您一个主意,从tablename中选择FirstName、LastName、ROW_NUMBER,而不是ORDER BY PostalCode作为“RowNumber”,其中RowNumber介于4100之间:-我最后只使用了WHERE子句。