0

私は2つの大きなテーブルを持っています:

A: (ID1,VAR1);
B: (ID1,ID2,VAR2)

そして 3 番目のテーブル:

C: (ID2...)

C からの値を持つレコードに対してのみ、A と B をマージしたいと思います。

以下、「IN」を使って考えてみます。これを行うより効率的な方法はありますか?「IN」がうまく機能しないことが時々ありました。

どうもありがとう!

select  A.VAR1,B.VAR2
from A 
INNER JOIN 
(
  select ID1,VAR2
  from B
  where ID2 in
                (select distinct ID2
                 from C
                )
) D
on A.ID1=D.ID1
4

2 に答える 2

1
select A.VAR1, B.VAR2 
from A 
INNER JOIN B on A.ID1 = B.ID1 
INNER JOIN C on B.ID2 = C.ID2
于 2012-08-08T16:46:44.627 に答える
0

サブクエリを使用する必要はありません。JOINすべてのテーブルでa を実行するだけです。

SELECT A.VAR1, B.VAR2
FROM A 
INNER JOIN B
    ON A.id1 = b.id1
INNER join
(
    SELECT DISTINCT id2
    FROM c
) c1
    ON b.id2 = c1.id2
于 2012-08-08T16:48:51.700 に答える