@JustJoe_066

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

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

UNION

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

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 разумеется запрос говна, про оптимизацию речи не идет
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы