【问题标题】:Is there a UniData SQL equivalent to the UniQuery SAMPLE keyword?是否有与 UniQuery SAMPLE 关键字等效的 UniData SQL?
【发布时间】:2013-05-14 22:24:19
【问题描述】:

我正在使用 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; 

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

【问题讨论】:

    标签: sql unidata


    【解决方案1】:

    很遗憾,不,似乎没有与 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
    

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 你好,杰西。欢迎来到堆栈溢出。您所指的SELECTLIST 命令是UNIQUERY 命令,而不是UniData SQL 命令。我的问题专门针对涉及 UniData SQL 的解决方案。
      猜你喜欢
      • 1970-01-01
      • 2012-04-18
      • 1970-01-01
      • 1970-01-01
      • 2023-03-17
      • 2010-12-31
      • 1970-01-01
      相关资源
      最近更新 更多