我正在研究MS SQL Server 2014中的查询
那基本上是很多工会
select x, y
where a = b
union
select x, y
where a = b
union
select x, y
where a = b
它工作正常,但where子句在每个选择上都是相同的。为了便于维护,我想知道是否有更好,更清洁的方法来做到这一点。
我在考虑先用where子句选择数据,然后只对这些数据进行所有其他查询。
但我对如何改进此查询的任何想法持开放态度。
答案 0 :(得分:4)
;WITH Test AS
(
SELECT x, y
UNION
SELECT x, y
UNION
SELECT x, y
)
SELECT * FROM Test
WHERE a = b
答案 1 :(得分:1)
您可以使用子查询并在其外部使用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
答案 2 :(得分:0)
Select *
From
(
select x, y
union
select x, y
union
select x, y
) MyDerivedTable
Where ...
确保在派生表内的表的select语句中包含需要过滤的列。