Select 来自数据子集

Select from a subset of data

我正在 MS SQL Server 2014

中处理查询

基本上就是很多工会

select x, y
where a = b
union
select x, y
where a = b
union
select x, y
where a = b

它工作正常,但是每个 select 上的 where 子句都是相同的。为了便于维护,我想知道是否有更好、更清洁的方法来做到这一点。

我正在考虑以某种方式select首先使用 where 子句处理数据,然后仅对该数据执行所有其他查询。

但我愿意接受有关如何改进此查询的任何想法。

Select * 
From
(
   select x, y

   union
   select x, y

   union
   select x, y
) MyDerivedTable
Where ...

确保在派生的 table.

中的 table 的 select 语句中包含需要过滤的列
;WITH Test AS
(
    SELECT x, y
    UNION
    SELECT x, y
    UNION  
    SELECT x, y
)
SELECT * FROM Test
WHERE a = b

您可以使用子查询并在其外部使用 where 子句以便于维护。 只需确保在 where 子句中需要的子查询中包含所有列。例如

SELECT * FROM 
    (
        SELECT x,y,a,b FROM table1
        union
        SELECT x,y,a,b FROM table2
        UNION
        SELECT x,y,a,b FROM table3
    )subquery
    WHERE a=b