DB2中的奇怪结果。分歧查询

时间:2015-08-05 12:37:41

标签: count db2 missing-data db2-luw

在尝试从db2数据库中收集结果时,我不知道原因,这是一件奇怪的事情。

查询如下:

SELECT
    COUNT(*)
FROM
    MYSCHEMA.TABLE1 T1
WHERE
    NOT EXISTS (
        SELECT
            *
        FROM
            MYSCHEMA.TABLE2 T2
        WHERE
            T2.PRIMARY_KEY_PART_1 = T1.PRIMARY_KEY_PART_2
            AND T2.PRIMARY_KEY_PART_2 = T1.PRIMARY_KEY_PART_2
    )

这是一个非常简单的。 奇怪的是,同样的查询,如果我将COUNT(*)更改为*我将获得 8 结果并使用COUNT(*)我将只获得 2 。这个过程重复了几次,奇怪的结果仍在继续。

在此示例中,TABLE2是TABLE1的父表,其中TABLE1的主键是 PRIMARY_KEY_PART_1和PRIMARY_KEY_PART_2 ,而TABLE2的主键是 PRIMARY_KEY_PART_1,PRIMARY_KEY_PART_2和PRIMARY_KEY_PART_3 。 它们之间没有外键(因为它们是遗留密钥)并且它们拥有大量数据。

DB2查询 SELECT VERSIONNUMBER FROM SYSIBM.SYSVERSIONS 返回:

7020400
8020400
9010600

使用的客户端是 SquirrelSQL 3.6 (没有标记行限制)。

那么,对这个奇怪的结果有什么解释呢?

1 个答案:

答案 0 :(得分:0)

没有细节(至少包括表和它们的索引的确切Db2版本和DDL)就什么都可以了,即使有了这些细节,只有IBM支持人员才能真正说出实际的情况。原因。

通常,这看起来像损坏的数据(例如,索引与表数据之间的差异)。

值得与IBM一起打开支持案例。