在SQL / MySQL中,如何在UNION之后应用WHERE语句?
Answers:
如果要将WHERE子句应用于UNION的结果,则必须将UNION嵌入到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
子句应用于两个内部查询可能更有意义。您可能需要对这两种方法的性能进行基准测试,然后看看哪种方法更适合您。