Как применить инструкцию WHERE после UNION в SQL/MySQL?
WHERE после UNION в SQL?
Ответ 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= ''