【发布时间】:2013-08-17 19:26:46
【问题描述】:
数据:
--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查询 2 的结果并返回 20074。
注意:我在此示例中使用了单个 WHERE 条件,但是在实际查询中,每个查询都有不同的 Where 条件,并且最终可能与上面的查询具有相同/不同的结果。
【问题讨论】:
标签: sql-server tsql merge