JustJoe_066
@JustJoe_066

Как преобразовать UNION-запрос в простой?

Допустим есть такой запрос, каким образом можно его "перефразировать", выкинув ключевое слово UNION из него?
SELECT FirstField AS FD
FROM Table
WHERE FirstField LIKE '*о*'

UNION

SELECT SecondField AS FD
FROM Table
WHERE SecondField LIKE '*о*';
  • Вопрос задан
  • 110 просмотров
Решения вопроса 1
pickHabr
@pickHabr
Костыльных дел мастер
Наркомания, но должно работать

SELECT
    CASE 
        WHEN FirstField LIKE '*о*' THEN FirstField
        WHEN SecondField LIKE '*о*' THEN SecondField
    END AS Field
FROM Table
WHERE FirstField LIKE '*о*'
OR SecondField LIKE '*о*';


UPD
Хорошо, продолжаем наркоманить :D

С учетом комментария Vitsliputsli

SELECT DISTINCT
    CASE 
        WHEN t1.FirstField  LIKE '*о*' THEN t1.FirstField
        WHEN t2.SecondField  LIKE '*о*' THEN t2.SecondField
    END AS Field

FROM Table t1

LEFT JOIN Table t2 ON 1=1

WHERE t1.FirstField LIKE '*о*'
   OR t2.SecondField LIKE '*о*';


Добавили distinct чтобы не было повторений, добавили join той же таблицы, по t1 проверяем подходит ли FirstField по t2 - SecondField. Единственный вопрос, а допустимо ли в этой задаче использовать join)

PS разумеется запрос говна, про оптимизацию речи не идет
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы