Где утверждение после UNION в SQL? - PullRequest
50 голосов
/ 28 марта 2011

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

Ответы [ 3 ]

90 голосов
/ 28 марта 2011

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

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

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

11 голосов
/ 28 марта 2011

Возможно, вам нужно обернуть 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 к обоим внутренним запросам.Возможно, вы захотите сравнить производительность обоих подходов и посмотреть, какой из них лучше для вас.

0 голосов
/ 16 ноября 2014
select column1..... from table1
where column1=''
union
select column1..... from table2
where column1= ''
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...