Вложенный SELECT «работает» при использовании несуществующего столбца - почему? - PullRequest
1 голос
/ 31 мая 2019

люди, у меня есть следующий запрос в SQLite:

select license, username from check_table where
(
    username not in (
        select username from Address
    )
) order by license, username;

Address - это еще одна таблица. Самое интересное: Address не имеет username столбца !!

подробности:

  • Результат: Query finished in 0.004 second(s)
  • Если я изменяю часть username (например, на userrname), я получаю ошибку no such column, что вполне нормально
  • он никогда не возвращает никаких результатов, даже когда я заменяю username на mail_username (который на самом деле существует) в суб-выборе - что совершенно странно, потому что это действительно должно.

Теперь мой вопрос: почему я не получаю ошибку здесь ?! И имеет ли это какое-то отношение к тому, что я никогда не получаю никаких результатов?

1 Ответ

2 голосов
/ 31 мая 2019

Вы выбираете username из check_table, а не из таблицы address.

Попробуйте добавить псевдонимы и проверьте это:

select ct.license, ct.username 
from check_table as ct
where
(
    ct.username not in (
        select ct.username 
        from Address as a
    )
) order by ct.license, ct.username;

Бьюсь об заклад, если вы попытаетесь использовать select a.username..., вы получите ошибку о несуществующем столбце.

Для этой цели все время, когда вы используете несколько таблиц в запросе, хорошо использовать псевдонимы.

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