1

以下に示すように、2 つの異なるテーブルから int 値を選択しています

select col1 from tablea
union 
select col1 from tableb

要件は、結果が最初のクエリで見つかった場合、それを使用することです。それ以外の場合は、2 番目のテーブルを参照してください。

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

top 1問題は、最初に見つかった結果ではなく、結果セットの最大数値が返されることです。

私はその順序で数値を気にしません-select 1から値を見つけた場合に優先順位を適用したいだけで、2番目のクエリを実行する必要はありません。

がないtop 1 *と返品3されてしまい6ます。他の選択を最初に行うと、同じ結果 top 1 *が得られます。6

ヘルプ!

4

1 に答える 1

3

これら 2 つの UNION を選択すると、順序 IS NOT DEFINED をランダムな順序と考えることができます。したがって、正しい結果を得るには順序を定義する必要があります。例えば:

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 に答える