2

と言う質問があります。

select col1,col2 from table1;

複数行の 2 列を返します。これらの 2 つの値を、別のクエリの where 条件で使用したいと考えています。何かのようなもの

select col3,col4 from table2 where col5=col1 and col6=col2;

ここでcol1、 とcol2は最初のクエリの結果の値です。

現在、私は次のような内部クエリを使用しています

select col3,col4 from table2 
where col5 in (select col1 from table1) 
  and col6 in (select col2 from table1);

しかし、結果が遅くなるため、上記のような内部クエリを使用したくありません。

提案してください。

4

1 に答える 1

2

JOINを使用する代わりに、IN次のように使用します。

SELECT t2.col3, t2.col4 
FROM table2 t2
INNER JOIN
(
   SELECT col1, col2 
   FROM table1
) t1 ON t2.col5 = t1.col1 AND t2.col6 = t1.col2

2 番目のテーブルで特定の列を選択する必要はありませんでした。次のように直接JOIN2 番目のテーブルを作成できます。table1

SELECT t2.col3, t2.col4 
FROM table2 t2
INNER JOIN table1 t1 ON  t2.col5 = t1.col1 
                     AND t2.col6 = t1.col2
于 2012-10-17T08:59:50.463 に答える