Следуйте этому, это действительно очевидно и просто.По некоторым причинам результаты различаются для разных запросов и углов подхода для подмножеств данных.Помните, что поле correct_addr
является полем char(1)
с допустимыми нулями.
select distinct correct_addr, count(*) from id_rec group by correct_addr;
correct_addr (count(*))
2477
N 80
Y 84013
3 row(s) retrieved.
Хорошо, поэтому correct_addr
содержит 3 различных значения: "N", "Y" и"" или "" или NULL
Итак, я попробую вот что:
select count(*) from id_rec where correct_addr <> 'N';
(count(*))
84013
Что случилось с 2477 записями, которые имеют это пустое значение?
Другойпопробуйте под другим углом:
select count(*) from id_rec where correct_addr in (null,'',' ','Y');
(count(*))
84013
То же самое происходит ....
Так что здесь происходит?Почему движок SQL (?) Не распознает пустое значение в последних 2 операторах SQL?Он обнаруживает это в первом запросе с группировкой, но больше нигде.
У кого-нибудь есть идеи относительно того, почему происходит этот тип вещей?