Где условия поверх существующих sql - псевдоним столбцов - PullRequest
0 голосов
/ 29 августа 2018

Я пытаюсь добавить условия динамического фильтра к существующему запросу SQL, я завернул запрос как:

select *
from ( existing sql )
where 1=1 <adding conditions here based on user selection>

В существующем sql у меня есть столбцы псевдонимов, по которым я не могу выполнить запрос, может кто-нибудь дать мне знать, как это сделать.

Пример, например:

select *
from (select firstName as "FN", lastName as "LN", city as "c" 
      from users
     )
WHERE 1 = 1 and FN IN ('John');

Это не работает, так как добавление фильтра к столбцу псевдонимов заканчивается ошибкой.

Если у меня нет псевдонима столбца в двойных кавычках, тогда он работает нормально. Но мне нужно обернуть существующий запрос и выполнить условие поверх него.

1 Ответ

0 голосов
/ 29 августа 2018

Вам нужен псевдоним для производной таблицы:

select *
from (select firstName as "FN", lastName as "LN", city as "c" 
      from users
     ) x
-------^
WHERE 1 = 1 and FN IN ('John');

Обратите внимание, что в MySQL производные таблицы обычно материализуются. Это может сильно повлиять на производительность, особенно если ваш запрос зависит от индексов. Этот маршрут немного опасен с точки зрения производительности.

Кроме того, ваше использование in эквивалентно =. Последнее более конкретно.

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