SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 20.08.2010 16:10:06

evshi
Участник
Зарегистрирован: 20.08.2010
Сообщений: 1

При использовании подзапроса записи не выбираются

Пытаюсь выбрать e-mail адреса из таблицы users.

Вот работающий запрос:
[SQL]
SELECT
    DISTINCT(`users`.`email`)
FROM `users`, `reviews`
WHERE `reviews`.`uid`=`users`.`id`
AND `reviews`.`fid`='80647'
AND `users`.`email` NOT IN (SELECT `email` FROM `reviews_stop_list`)
--AND `users`.`email` NOT IN (SELECT `email` FROM `firm` WHERE `id`='80647' AND `show`=1)
AND `reviews`.`active`=1
[/SQL]
Возвращает нужные адреса.

В закомментированной строчке идет подзапрос (SELECT `email` FROM `firm` WHERE `id`='80647' AND `show`=1), который если выполнить отдельно, возвращает Null. Если же эту строчку раскомментировать в основном запросе, то основной запрос возвращается вместо нужных адресов пустоту.

Подскажите, пожалуйста, с чем это может быть связано?

Неактивен

 

#2 20.08.2010 16:23:46

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: При использовании подзапроса записи не выбираются

С тем, что сравнение с NULL всегда дает NULL:

Код:

[celestia] root test > select 1 = NULL;
+----------+
| 1 = NULL |
+----------+
|     NULL |
+----------+
1 row in set (0.00 sec)

[celestia] root test > select * from z;
+------+
| a    |
+------+
|    1 |
|    2 |
|    3 |
+------+
3 rows in set (0.00 sec)

[celestia] root test > select * from z where a != NULL;
Empty set (0.00 sec)

Чтобы сделать то, что Вы ожидаете, нужно добиться того, чтобы подзапрос вернул не
NULL, а пустое множество строк.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson