如何修复SQL select union的不确定TOP 1结果

时间:2012-12-10 05:46:46

标签: sql sql-server

我从两个不同的表中选择一个int值,如下所示

select col1 from tablea
union 
select col1 from tableb

要求是在第一个查询中找到结果,使用它;否则,请查看第二个表格。

select top 1 * from (select col1 from tablea union select col1 from tableb) as a

问题是结果集的最高数值是top 1返回 - 而不是第一个找到的结果。

我不关心它的顺序中的数值 - 我只是想应用优先级如果从select 1中找到一个值而不打扰运行第二个查询。

如果没有top 1 *,我会返回36。当我top 1 *时,如果我先执行另一个选择,我会得到6并得到相同的结果。

帮助!

1 个答案:

答案 0 :(得分:3)

当您使用UNION这两个选择顺序IS NOT DEFINED时,您可以将其视为RANDOM顺序。因此,您应该定义顺序以获得正确的结果。例如:

select top 1 C1 from 
(select col1 as C1, 1 as c2 from tablea 
     union 
 select col1 as C1, 2 as c2 from tableb) as a 
ORDER BY C2