如何在SQL / MySQL中的UNION之后应用WHERE语句?
答案 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= ''