在尝试从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 (没有标记行限制)。
那么,对这个奇怪的结果有什么解释呢?
答案 0 :(得分:0)
没有细节(至少包括表和它们的索引的确切Db2版本和DDL)就什么都可以了,即使有了这些细节,只有IBM支持人员才能真正说出实际的情况。原因。
通常,这看起来像损坏的数据(例如,索引与表数据之间的差异)。
值得与IBM一起打开支持案例。