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

Tsql 合并多个查询,排除常见结果,tsql,union,intersect,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

数据:

查询:

--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    
从上面的查询中,我需要每个查询中3个相互不重叠的结果,在这种情况下,预期结果应该包含查询1的前2个结果,即20011和10027,对于下一个前1,它应该排除这2个结果,并返回查询2的20074


注意:我在这个例子中使用了一个WHERE条件,但是在实际的查询中,每个查询都有不同的WHERE条件,并且最终可能会得到与上面的查询相同/不同的结果。

据我所知,如果您正在搜索某个特定ZoneName的不同Id,那么这可能会解决问题

20011
10027
20074

但这是工会的行为。如果你想复制,那么你需要联合所有。实际上,我不希望它们之间存在重复项,但如何从查询2中排除已为查询1返回的内容?添加了更多解释添加了实际数据和更多解释!Exception将不起作用,因为它将排除查询1和查询2之间的结果,并且不会返回任何结果。您能否修改您的答案以使其更具体?谢谢
SELECT DISTINCT ID
FROM TABLE1
WHERE ZoneName="Name1"