TAB_A と TAB_B の 2 つのテーブルがあります。TAB_A はマスター テーブルで、TAB_B は子/トランザクション テーブルです。TAB_A には COL_A (主キー) があり、TAB_B には COL_B (主キー) と COL_A があります。
業務上の理由により、列 COL_A の TAB_A と TAB_B の間に外部キーが定義されていません。
TAB_B には 4 つのレコードがあり、COL_A には 1、2、3、4 などの値があり、TAB_A の COL_A には対応する一致する値がありません。(これらは、誤って作成された孤立したレコードです)
次の SELECT クエリを発行すると、4 つのレコードが取得されます
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)
しかし、クエリで A.COL_A を参照し始めると、SELECTレコードが返されません。
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