powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Мистика SQL запроса
7 сообщений из 7, страница 1 из 1
Мистика SQL запроса
    #38576184
Vladimit04
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
mysql> select guid from t1 where guid=245707;
+--------+
| guid   |
+--------+
| 245707 |
+--------+
1 row in set

mysql> select guid from t2 where guid=245707;
Empty set

mysql> select guid from t1 where guid not in (select guid from t2);
Empty set


Почему не может выбрать значение? Таблицы одинаковые. Колонки guid отличаются только тем, что t1 она unsigned и никаким образом это на результат влиять не должно. Или я слишком утомился, или пора начинать верить в компьютерных привидений.
...
Рейтинг: 0 / 0
Мистика SQL запроса
    #38576187
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не удается воспроизвести.
Покажите точный DDL таблиц.
...
Рейтинг: 0 / 0
Мистика SQL запроса
    #38577417
Cygapb-007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vladimit04Почему не может выбрать значение? Таблицы одинаковые. Колонки guid отличаются только тем, что t1 она unsigned и никаким образом это на результат влиять не должно. Или я слишком утомился, или пора начинать верить в компьютерных привидений.Потому что (select guid from t2) возвращает NULL

А конструкция where a in (b,c,d) эквивалентна where a=b OR a=c OR a=d
Ну а сравнение с NULL общий результат всегда превращает в NULL
...
Рейтинг: 0 / 0
Мистика SQL запроса
    #38577419
Cygapb-007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Точно так же where a not in (b,c,d) => where not(a=b or a=c or a=d) => (b is null) => NULL
...
Рейтинг: 0 / 0
Мистика SQL запроса
    #38577421
Cygapb-007,

Небольшая поправочка...
Вот как раз упомянутый тобой IN - "нечувствителен" к NULL-ам, Так как NULL or TRUE - все же TRUE.
В отличии от NOT IN , который у автора и имеет место быть. ;) Он раскрывается в гирлянду неравенств через AND. И тут уже работает то, о чем ты сказал: (TRUE and NULL) = NULL
...
Рейтинг: 0 / 0
Мистика SQL запроса
    #38577432
Cygapb-007,

и ещё - EMPTY SET и NULL - это две большие разницы. И если NOT IN-подзапрос возвращает EMPTY SET, то запрос из основной таблицы с участием предиката NOT IN (empty set) возвращает все строки из основной таблицы...

Как пример иллюстрации всех трех ситуаций...
...
Рейтинг: 0 / 0
Мистика SQL запроса
    #38579421
Vladimit04
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Блин, точно, спасибо большое пацаны! В таблицы t2 были guid с null значениями!
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Мистика SQL запроса
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]