合并多个查询,排除常见结果

时间:2013-08-14 21:18:56

标签: tsql union intersect

数据:

--Table 1 :
Id ZoneName
----------- --------
20011       Name1
10027       Name1
20011       Name1
20011       Name1
20011       Name1
20074       Name1
20011       Name2
20011       Name2
10059       Name3
20011       Name2

查询:

 Select Top 2 [Id] From Table1 -- First Query
    WHERE ZoneName = 'Name1'
    UNION
    SELECT Top 1 [Id] from Table1 -- Second Query
    WHERE ZoneName = 'Name1'
    UNION
    SELECT Top 1 [Id] from Table1 -- Third Query
    WHERE ZoneName = 'Name1'

结果:

Id
-----
20011    

预期结果:

20011
10027
20074

从上面的查询中我需要来自每个查询的3个结果不相互重叠,在这种情况下,预期结果应该包含查询1的前2个,即20011和10027,对于下一个前1,它应该排除那些2结果并返回20074查询2.

注意:我在本例中使用了单个WHERE条件,但在实际查询中,每个查询都有不同的Where条件,并且最终可能会从上面的查询中获得相同/不同的结果。

1 个答案:

答案 0 :(得分:1)

据我所知如果您正在搜索查询特定ZoneName的不同ID,那么这可能会解决

SELECT DISTINCT ID
FROM TABLE1
WHERE ZoneName="Name1"