Db2 查询结果在远程和本地数据库中发生更改

Db2 查询结果在远程和本地数据库中发生更改,db2,db2-luw,Db2,Db2 Luw,下表是在本地数据库和远程数据库中创建的 CREATE TABLE EMPLOYEE1 ( EMP_ID INTEGER, EMP_NAME VARCHAR(10), EMP_DEPT VARCHAR(10) ); INSERT INTO EMPLOYEE1 (EMP_ID, EMP_NAME,EMP_DEPT) VALUES (1,'A','IT'), (2,'B','IT'), (3,'C','SALES'), (4,'D','SALES'), (5,'E','ACCOUNTS'), (6,

下表是在本地数据库和远程数据库中创建的

CREATE TABLE EMPLOYEE1 ( EMP_ID INTEGER, EMP_NAME VARCHAR(10), EMP_DEPT VARCHAR(10) );
INSERT INTO EMPLOYEE1 (EMP_ID, EMP_NAME,EMP_DEPT)
VALUES (1,'A','IT'), (2,'B','IT'), (3,'C','SALES'), (4,'D','SALES'), (5,'E','ACCOUNTS'), (6,'F','ACCOUNTS'), (7,'G','HR'), (8,'H','HR');

COMMIT;
在两个数据库中创建的表中插入以下行

CREATE TABLE EMPLOYEE1 ( EMP_ID INTEGER, EMP_NAME VARCHAR(10), EMP_DEPT VARCHAR(10) );
INSERT INTO EMPLOYEE1 (EMP_ID, EMP_NAME,EMP_DEPT)
VALUES (1,'A','IT'), (2,'B','IT'), (3,'C','SALES'), (4,'D','SALES'), (5,'E','ACCOUNTS'), (6,'F','ACCOUNTS'), (7,'G','HR'), (8,'H','HR');

COMMIT;
如果我在我的系统的本地数据库中运行下面的查询,那么查询结果是正确的。也就是说,它返回表中的所有行,就像查询必须做的那样。但如果在远程数据库中运行相同的查询,则只返回4行,这是错误的结果

SELECT * FROM EMPLOYEE1 WHERE (EMP_DEPT NOT IN ('IT','SALES') OR EMP_DEPT IN ('IT','SALES'));

有人能提出查询行为发生变化的原因吗?

根据您的查询,您希望选择所有记录。然后,您可以简单地使用以下命令

SELECT * FROM EMPLOYEE1
这个条件的目的是什么

WHERE (EMP_DEPT NOT IN ('IT','SALES') OR EMP_DEPT IN ('IT','SALES'))

只需使用
SELECT*FROM EMPLOYEE1
。您确定运行的是完全相同的查询/数据集吗?没有理由会有不同的结果(好吧,除非旧的指数统计数据出现一些反常的事故)。你要回到哪四排?特别是,一对错放的撇号(单引号)可能会导致给定的行为。请发布本地和远程数据库的操作系统、具有补丁包级别的DB2版本。EMP_ID EMP_NAME EMP_DEPT 1 a IT 2 B IT 3 C SALES 4 D SALES。是的,我在这两个数据库中运行的脚本相同。上面提到的是远程数据库中查询返回的四行。我在本地数据库中使用DB2 express C 9.7,在远程数据库中使用windows 7 OS和DB2 enterprise edition。不。我关心的是结果的差异。无论条件如何,但结果应该是相同的。但是查询给出的结果不同。删除请在远程中创建表,然后使用此。。。检查是否获得了所有记录…按照建议进行了尝试。但结果仍然相同。我在不同的编辑器TOAD和IBM data studio中进行了尝试,但在远程数据库中的结果相同。