У меня есть две таблицы TAB_A и TAB_B. TAB_A является основной таблицей, а TAB_B является дочерней/транзакционной таблицей. TAB_A имеет COL_A (первичный ключ), а TAB_B имеет COL_B (первичный ключ), а также COL_A.Результат запроса DB2 - различное поведение
По какой-либо причине, внешний ключ не определяется между TAB_A и TAB_B на столбце COL_A.
В TAB_B есть четыре записи с некоторыми значениями: 1, 2, 3 и 4 в COL_A, которые не имеют соответствующих совпадающих значений в COL_A TAB_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)
Но если я начну со ссылкой 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)
Может кто-нибудь объяснить это странное поведение?
DB2 Версии 9.5 в AIX
Пожалуйста, убедитесь, что первый запрос точно так, как описано, и что он фактически возвращает 4 записи.Он ничего не должен возвращать, если в TAB_B не существует значений 1,2,3,4 для COL_A. – 2008-10-31 08:40:01
Очевидно, что во втором запросе есть опечатка, возможно, вы говорите A.COL_A = B.COL_C или некоторые другие опечатки – Hogan 2013-11-18 16:01:59