我从两个不同的表中选择一个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 *
,我会返回3
和6
。当我top 1 *
时,如果我先执行另一个选择,我会得到6
并得到相同的结果。
帮助!
答案 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