Странное НЕ в поведении оператора - PullRequest
1 голос
/ 29 июля 2011
SELECT something FROM somewhere WHERE something IN (a, b, c)

дает нормальные результаты, и,

SELECT something FROM somewhere WHERE something NOT IN (a, b, c)

должен дать мне все результаты из столбца что-то в таблице где-то , но это дает мне во много раз больше случайных повторяющихся строк, чем в таблице. Все примеры NOT IN в Интернете с текстовыми строками, а я работаю с числами, есть ли что-то другое?

Ответы [ 2 ]

4 голосов
/ 29 июля 2011

Без "настоящих" запросов трудно сказать, что происходит ...

сказал Тат и, добавив к ответу Майкла, убедитесь, что в предложениях not in нет нулевых значений, поскольку семантика тогда сильно отличается от таковой с кажущимся противоположным предложением in:

select a from b where a in (1, null);     -- rows where a = 1
select a from b where a not in (1, null); -- no rows, since x <> null is null
1 голос
/ 29 июля 2011

Получение "многократно" строк в вашем результате почти всегда является результатом неправильного объединения.Изучите операторы JOIN в предложении FROM и / или любых табличных отношениях, указанных в предложении WHERE.

Убедитесь, что в ваше предложение FROM не включены таблицы, которые неправильно соединены с другими таблицами в операторе SELECT.

Удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...