Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Обработка NULL значений  [new]
lexa11_2002
Member

Откуда:
Сообщений: 12
Доброго времени суток.


Возник вопрос, возможно он уже обсуждался ранее.

Есть две таблицы A(1,2,3,4,5) и B(1,null,3,6,5) со столбцом ID

Запрос Select * from A where ID IN (Select ID from B) возвращает данные, а запрос
Select * from A where ID NOT IN (Select ID from B) не возвращает ничего.

Понятное дело что это происходит из-за сравнения с NULL значениями, но почему IN работает а NOT IN не работает. ????
31 авг 11, 12:46    [11205359]     Ответить | Цитировать Сообщить модератору
 Re: Обработка NULL значений  [new]
Alexander Anokhin
Member

Откуда: Хабаровск
Сообщений: 500
NOT IN
31 авг 11, 12:48    [11205369]     Ответить | Цитировать Сообщить модератору
 Re: Обработка NULL значений  [new]
lexa11_2002
Member

Откуда:
Сообщений: 12
а можете сюда перепостить.. а то туда ссылка закрыта
31 авг 11, 12:49    [11205379]     Ответить | Цитировать Сообщить модератору
 Re: Обработка NULL значений  [new]
gesttttt
Guest
lexa11_2002,

Разложите оба варианты логически
1) для каждой строки из A, чтобы она попала в выборку должны выполнится условия
A.ID = B.ID(1) or A.ID = B.ID(2)....

2) для каждой строки из A, чтобы она попала в выборку должны выполнится условия
A.ID != B.ID(1) and A.ID = B.ID(2)....


а как вы думаете какой результат дает A.ID != null?
31 авг 11, 12:58    [11205457]     Ответить | Цитировать Сообщить модератору
 Re: Обработка NULL значений  [new]
AmKad
Member

Откуда:
Сообщений: 5222
lexa11_2002,

Переписать через not exists.
31 авг 11, 13:07    [11205526]     Ответить | Цитировать Сообщить модератору
 Re: Обработка NULL значений  [new]
lexa11_2002
Member

Откуда:
Сообщений: 12
gesttttt, зачетное объяснение )))
31 авг 11, 13:17    [11205584]     Ответить | Цитировать Сообщить модератору
 Re: Обработка NULL значений  [new]
Elic
Member

Откуда:
Сообщений: 29987
lexa11_2002
зачетное объяснение
RTFM Membership Conditions (FAQ)
31 авг 11, 13:37    [11205724]     Ответить | Цитировать Сообщить модератору
 Re: Обработка NULL значений  [new]
Elic
Member

Откуда:
Сообщений: 29987
AmKad
Переписать через not exists.
И больше никак?
31 авг 11, 13:38    [11205730]     Ответить | Цитировать Сообщить модератору
 Re: Обработка NULL значений  [new]
AmKad
Member

Откуда:
Сообщений: 5222
Elic
AmKad
Переписать через not exists.
И больше никак?

Фильтрация null-ов в подзапросе.
31 авг 11, 14:03    [11205975]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить