【问题标题】:Querying a DB2 table using the "DISTINCT" keyword from MSAccess使用 MSAccess 中的“DISTINCT”关键字查询 DB2 表
【发布时间】:2019-08-15 16:15:45
【问题描述】:

我对链接的 DB2 表有一个相当简单的查询。

SELECT GC_TBSELC.*
FROM GC_TBSELC
WHERE SELC_EFF_DATE > #1/1/2017#;

工作正常,返回结果。但是,当我添加“DISTINCT”关键字时,出现错误:

ODBC -- 调用失败

[[IBM][CLI Driver][DB2] SQL0904N 由 不可用的资源。原因代码:“00C90305”,资源类型: “00000100”,资源名称:“DSNDB07”。 SQLSTATE=57011

知道为什么“DISTINCT”关键字会导致这种情况,以及是否有办法从表中获取不同的记录?

【问题讨论】:

  • 显示产生错误的查询。
  • 我所做的只是将“DISTINCT”添加到上述查询中。 SELECT DISTINCT GC_TBSELC.*...
  • 你查过error code吗?可能该表非常大(或者您有像 blob 之类的大字段)并且 DISTINCT 对于您的资源限制来说是昂贵的。另外,不应将DISTINCT* 一起运行。它们不是表中的唯一标识符吗?尝试显式引用列。

标签: ms-access db2 ms-access-2013 db2-zos


【解决方案1】:

SQL0904N with Reason code: 00C90305 表示如下:

代理对工作文件存储空间使用的限制是 超过。空间使用限制由 zparm 关键字确定 最大温度。

通过在SELECT *(所有列)上添加DISTINCT 子句,您可能会超出可用的工作空间。

让我问一个更好的问题:为什么要DISTINCT 表中的所有列?这真的是您正在寻找的结果集吗? DISTINCT 此表中列的子集是否更合适?

【讨论】:

    【解决方案2】:

    没有 DISTINCT 的查询不需要重复删除 - 行可以流回调用者。

    DISTINCT 告诉 Db2 - 在传回行之前删除重复项。在这种情况下,Db2 可能将行具体化为排序工作并进行排序以删除重复项,在此过程中,超出了排序工作限制。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-20
      • 2018-09-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-24
      • 1970-01-01
      相关资源
      最近更新 更多