1

我正在从两个不同的表中选择一个 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

帮助!

4

1 回答 1

3

当您 UNION 这两个选择订单未定义时,您可以将其视为随机订单。因此,您应该定义顺序以获得正确的结果。例如:

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
于 2012-12-10T05:53:22.957 回答