Форум программистов, компьютерный форум, киберфорум
Наши страницы
MySQL
Войти
Регистрация
Восстановить пароль
 
arni
904 / 869 / 62
Регистрация: 06.01.2010
Сообщений: 2,367
Записей в блоге: 6
#1

Два запроса, эквивалентных на мой взгляд, возвращают разные наборы данных - MySQL

03.02.2014, 08:56. Просмотров 483. Ответов 2
Метки нет (Все метки)

Задача: вытащить все регионы, к которым не привязаны дилеры.

Запрос №1 (возвращает 0 записей):
SQL
1
SELECT * FROM regions WHERE id NOT IN (SELECT region_id FROM dealers)
Запрос №2 (возвращает несколько записей):
SQL
1
SELECT * FROM regions r WHERE NOT EXISTS(SELECT 1 FROM dealers d WHERE d.region_id=r.id)
Типы полей regions.id и dealers.region_id одинаковы. По regions.id построен уникальный индекс, NULL-значений нет. БД восстановлена из скрипта только что - битых страниц быть не должно.

Как такое может быть, что запросы возвращают разный результат?
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.02.2014, 08:56
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Два запроса, эквивалентных на мой взгляд, возвращают разные наборы данных (MySQL):

Два почти идентичных запроса mysql_query выдают разные результаты
Всем привет! У меня возникла проблема. Я начинающий програмист і вот уже 6...

Мой взгляд на регулятор громкости
Вот доделал наконец-то регулятор. В общем ничего особенного, релейный...

регулярное выражение(на мой взгляд не тривиална)
Всем привет. Подскажите пожалуйста у кого какие мысли по написанию регекса...

Странное на мой взгляд объявление функции
Добрый день. В исходниках усмотрел следующую вещь: void __RPC_STUB...

Программа постоянно неправильно сравнивает(на мой взгляд)
В цикле на 34 строке переменная B никогда не находит себе пару в массиве...

глубочайшее заблуждение, как на мой взгляд, а на ваш?
вот статья http://antichat.ru/txt/email/ по поводу взлома почтовой системы,...

2
cygapb-007
1306 / 938 / 144
Регистрация: 17.01.2013
Сообщений: 2,348
03.02.2014, 09:19 #2
Похоже, в MySQL тоже справедливы положения из MS SQL: Условия поиска при сравнении со значением NULL

пример в http://sqlfiddle.com/#!2/96c61/1

Добавлено через 2 минуты
Дополню: NOT IN раскрывается в NOT(val=r1 or val=r2 or ... or val=null), а результат сравнения с NULL всегда неопределен

Добавлено через 8 минут
PPS спасибо за пример с NOT IN
0
arni
904 / 869 / 62
Регистрация: 06.01.2010
Сообщений: 2,367
Записей в блоге: 6
03.02.2014, 09:34  [ТС] #3
Мда, стоило добавить к первому запросу предикат
SQL
1
WHERE region_id IS NOT NULL
как всё заработало и в первом случае.
Что сказать, весьма неожидано после Firebird видеть такое.

cygapb-007, спасибо за подсказку.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.02.2014, 09:34
Привет! Вот еще темы с решениями:

Реализовать разные наборы элементов в ComboBox
подскажите, как сделать так, чтоб содержание комбобокса менялось после запуска...

Lotusscript И @-формула Возвращают Разные Значения
Две кнопки в одной панели действий на одной код на скрипте: ......

На мой взгляд архитрудно. Найти номера соседних точек по номеру точки
Суть задачи такова: -Дано - прямоугольный параллелепипед(Вроде так называется)...

Интерфейсы-методы, который возвращают разные типы объектов
Всем привет, наткнулся на такую проблему, и пока не могу решить её. Я создаю...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru