开发者社区> 问答> 正文

DB2查询输出-不同的行为

我有两个表TAB_A和TAB_B。TAB_A是主表,TAB_B是子表/事务表。TAB_A具有COL_A(主键),而TAB_B具有COL_B(主键),也具有COL_A。

由于某些业务原因,未在列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) 有人可以解释这种奇怪的行为吗?

AIX中的DB2版本9.5

问题来源于stack overflow

展开
收起
保持可爱mmm 2019-11-18 18:02:21 480 0
1 条回答
写回答
取消 提交回答
  • 这两个查询应返回相同的行。如果这确实如您所描述的那样运行,则说明您在DB2中发现了一个错误。

    您要使用此查询完成什么工作?如果B.COL_A的值(1,2,3,4)是孤立记录,则此查询应不返回任何行。如果要搜索孤儿,则可能需要进行某种外部联接。

    2019-11-18 18:02:29
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
对 2000 多亿条数据做一次 group by 需要多久? 立即下载
对2000多亿条数据做一次Group By 需要多久 立即下载
PolarDB NL2SQL: 帮助您写出准确、优化的SQL 立即下载