SQL中的UNION之后的WHERE语句?

时间:2011-03-27 20:34:17

标签: mysql sql

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

3 个答案:

答案 0 :(得分:89)

如果要将WHERE子句应用于UNION的结果,则必须在UN子句中嵌入UNION:

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

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

答案 1 :(得分:10)

您可能需要将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子句应用于两个内部查询可能更有意义。您可能希望对这两种方法的性能进行基准测试,看看哪种方法更适合您。

答案 2 :(得分:0)

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