Вот мой запрос:
SELECT my_view.*
FROM my_view
WHERE my_view.trial in (select 2 as trial_id from dual union select 3 from dual union select 4 from dual)
and my_view.location like ('123-%')
Когда я выполняю этот запрос, он возвращает результаты, которые не соответствуют условию my_view.location like ('123-%')
. Как будто это условие полностью игнорируется. Я даже могу изменить его на my_view.location IS NULL
, и он выдаст те же результаты, несмотря на то, что это поле не имеет значения NULL.
Я знаю, что этот запрос кажется нелепым с выбором из двойного, но я структурировал его таким образом, чтобы воспроизвести проблему, возникающую у меня, когда я использую предложение WITH (в результате этого запроса выбираются два встроенных слова вид есть).
Я могу изменить запрос следующим образом, и он выдаст ожидаемые результаты:
SELECT my_view.*
FROM my_view
WHERE my_view.trial in (2, 3, 4)
and my_view.location like ('123-%')
К сожалению, я не знаю пробные значения заранее (они запрашиваются в предложении WITH), поэтому я не могу структурировать свой запрос таким образом. Что я делаю не так?
Я скажу, что представление my_view состоит из 3 других представлений, результаты которых UNION ALL
, и каждое из которых извлекает некоторые данные по ссылке в БД. Не то, чтобы я считаю, что это должно иметь значение, но в случае, если это имеет значение.