1

我正在使用 UniData 6。是否有与 UniQuery SAMPLE 关键字等效的 UniData SQL?

使用 UniQuery,我一直能够做到:

SELECT CUST BY NAME SAMPLE 1 

它会给我带有第一个字母名称的记录。

在 UniData SQL 中,我希望能够执行以下操作:

SELECT NAME FROM CUST ORDER BY NAME SAMPLE 1; 

...或者,就像在其他 SQL 数据库中一样...

SELECT TOP 1 NAME FROM CUST ORDER BY NAME; 

并仅获取按字母顺序列出的客户的姓名。有这样的关键字吗?

4

2 回答 2

2

不幸的是,不,似乎没有与 UniQuery SAMPLE 关键字等效的 UniSQL。UniSQL 由 ANSI SQL-92标准的一个子集组成,并带有一些支持多值的扩展。但是,ANSI SQL-92 不包含限制从查询返回的结果集的标准,这就是各种 DBMS 有不同语法的原因。

ANSI SQL-2008添加了FETCH FIRST子句,这是对查询返回的行数实施限制的标准方法。由于它现在落后了 20 多年,因此需要进行相当大的更新才能使 UniSQL 达到最新标准。用户社区似乎没有足够的需求来承担这项工作。

根据您的文件架构,您可以应用解决方法。如果您使用的是自动递增键,则可以使用如下语法:

SELECT foo
FROM bar
WHERE @ID <= 10

上述查询将对返回的行数应用事实上的限制。

于 2013-05-14T14:24:19.937 回答
-2

SELECT 通常只适用于记录 ID。如果您想列出属性,请尝试 LIST:LIST INVENTORY PROD_NAME PRICE QTY SAMPLE例如将返回前 10 个产品名称、价格和数量。

于 2011-10-31T19:05:15.500 回答