SQL中的UNION之后的WHERE语句?

如何在SQL / MySQL中的UNION之后应用WHERE语句?

如果要将WHERE子句应用于UNION的结果,则必须将UNIONembedded到FROM子句中:

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

我假设TableA和TableB是联合兼容的。 当然,您也可以将WHERE子句应用于UNION中的各个SELECT语句。

您可能需要将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子句应用于两个内部查询可能更有意义。 您可能想要对两种方法的性能进行基准testing,并查看哪种方法对您更好。

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