Подтвердить что ты не робот

WHERE после UNION в SQL?

Как применить инструкцию WHERE после UNION в SQL/MySQL?

4b9b3361

Ответ 1

Если вы хотите применить предложение WHERE к результату UNION, вам необходимо вставить UNION в предложение FROM:

SELECT *
  FROM (SELECT * FROM TableA
        UNION
        SELECT * FROM TableB
       ) AS U
 WHERE U.Col1 = ...

Я предполагаю, что TableA и TableB совместимы с профсоюзом. Вы также можете применить предложение WHERE к каждому из отдельных операторов SELECT в UNION, конечно.

Ответ 2

Вероятно, вам нужно обернуть UNION в под SELECT и применить предложение WHERE после этого:

SELECT * FROM (
    SELECT * FROM Table1 WHERE Field1 = Value1
    UNION
    SELECT * FROM Table2 WHERE Field1 = Value2
) AS t WHERE Field2 = Value3

В принципе, UNION ищет два полных оператора SELECT для объединения, а предложение WHERE является частью инструкции SELECT.

Возможно, имеет смысл применить внешнее предложение WHERE к обоим внутренним запросам. Возможно, вам захочется сравнить производительность обоих подходов и посмотреть, какая из них лучше для вас.

Ответ 3

select column1..... from table1
where column1=''
union
select column1..... from table2
where column1= ''