我有两个表TAB_A和TAB_B。 TAB_A是主表,TAB_B是子/事务表。 TAB_A具有COL_A(主键),而TAB_B具有COL_B(主键)以及COL_A。DB2查询输出 - 不同行为
由于某些商业原因,COL_A列上的TAB_A和TAB_B之间未定义外键。
在TAB_B中有四条记录,COL_A中有一些值表示1,2,3和4,它们在TAB_A的COL_A中没有对应的匹配值。 (他们是孤立记录,错误地创建)
当我发出以下SELECT查询,我得到四个记录
SELECT B.COL_B,
B.COL_A
FROM TAB_A A,
TAB_B B
WHERE A.COL_A = B.COL_A
AND B.COL_A IN (1, 2, 3, 4)
但是,如果我开始在SELECT
查询指A.COL_A,没有记录返回。
SELECT B.COL_B,
B.COL_A,
A.COL_A
FROM TAB_A A,
TAB_B B
WHERE A.COL_A = B.COL_A
AND B.COL_A IN (1, 2, 3, 4)
有人能解释这种奇怪的行为吗?
DB2版本9.5在AIX
请确认第一个查询与描述完全相同,并确实返回4条记录。它不应该返回任何东西,如果COL_A的值1,2,3,4不存在于TAB_B中。 – 2008-10-31 08:40:01
显然在第二个查询中存在拼写错误,也许您在说A.COL_A = B.COL_C或其他一些错字 – Hogan 2013-11-18 16:01:59