2009-06-11 5 views
1

「Id」フィールドを含む重複レコードを持つ2つのテーブルがあり、それらを結合する必要があります。
しかし、[連合]よりもはるかに効率が良いと思います。
なぜなら、ソートする必要がないからです。 「ユニオンオール」によって異なるIDのみを持つ別のテーブルからレコードを結合する方法

は私のsqlです:。。
SELECT * [DBO] FROM
[リアルタイム]
UNION ALL
SELECT * [DBO] FROM
[クエリ]
WHERE ませ EXCOTS(
    SELECT TOP 1 1
    FROM [dbo]。[RealTime] b
    WHERE a.Id = b.Id

あなたはどんな提案またはよりエレガントなステートメントを持っているのだろうか?

答えて

1

オプション1(あなた):まずdbo.RealTimeをクエリし、次にdbo.Queryをクエリし、dbo.Queryの各行に対してdbo.Realtimeを参照します。

オプション2(UNION):クエリdbo.RealTime、クエリdbo.Query、重複を削除します。

これらの2つのオプションが異なる結果をもたらすことは別として、(最初のオプションはdbo.RealTimeとdbo.Queryから取得した重複を保持します)、オプション2はほとんどの場合、 dbo.RealTimeが(おそらく)dbo.Queryより1桁小さい場合を除いて、dbo.RealTimeを2回クエリする必要はありません。

+0

dbo.RealTimeはdbo.Queryよりもはるかに小さいです。ありがとうございました ! – sesame

1

サンプルのsqlは、レコードのないレコードセットを、同じIDを持つ2番目のテーブルに取得しますが、他のフィールドは異なる可能性があります。
あなたの要件ですか?

+0

はい、それは私の必要条件です。 – sesame

関連する問題