Как бороться с возвращением нулевого подзапроса

0

Я хочу только запустить родительский выбор, если подзаголовок не равен нулю. Не знаете, как это сделать, используя SQL-запрос:

SELECT * from schools 
    WHERE 'district_id' =
    (SELECT district_id from schools WHERE 'school_id' = '0023194')
  • 0
    Это то, что делает ваш запрос. Пример данных и желаемых результатов полезны.
  • 0
    если SELECT district_id из школ WHERE school_id = '0023194' возвращает значение NULL, я получаю все строки из школ
Показать ещё 12 комментариев
Теги:
select
subquery

3 ответа

1

Вы можете использовать оператор IN поскольку оператор IN позволяет вам указывать несколько значений в предложении WHERE.

Оператор IN является сокращением для нескольких условий OR. В вашем состоянии: = сравнивает только одно условие, но если у вас есть несколько записей этого school_id, = не может его оценить.

SELECT * from schools WHERE 'district_id' in (SELECT district_id from schools WHERE 'school_id' = '0023194')
1

вы должны запустить свой SQL-запрос, например...

SELECT * from schools 
WHERE 'district_id' = 
(SELECT district_id from schools 
    WHERE 'school_id' = '0023194'
    AND 
    district_id IS NOT NULL) 
AND district_id IS NOT NULL

District_ID НЕ НЕТ, чтобы исключить район

  • 0
    Не то, что я ищу, этот запрос возвращает то же количество строк, что и SELECT * из школ WHERE district_id = (SELECT district_id из школ WHERE school_id = '0023194')
1

Кажется, вам просто нужно использовать IN как показано ниже:

SELECT * from schools 
WHERE 'district_id' in
(SELECT district_id from schools WHERE 'school_id' = '0023194')

SQL ЗДЕСЬ

  • 0
    Я пытался, что нет, все еще возвращает строки с district_id, которые являются нулевыми
  • 0
    Кажется, что-то не так в вашей базе данных! Проверьте скрипку и представьте проблему, с которой вы столкнулись. sqlfiddle.com/#!9/9440a2/2

Ещё вопросы

Сообщество Overcoder
Наверх
Меню