-3

値が異なる列に基づいて 2 つのテーブルを結合する必要がある状況に遭遇しました。

例えば

  • Table1列ありT1
  • Table2列ありT2

  • T1値のある100行がありますP

  • T2値のあるN50 行と値のある 50 行がありますP

値を持つテーブルTable1と値Pを持つTable2テーブルを結合したいNP

合計100件のレコードが得られるはずです。

4

3 に答える 3

1

これを試して:

SELECT 
  t1.t1, 
  t2.t2
FROM Table1 t1
INNER JOIN Table2 t2 ON t2.t2 IN('N', 'P')
WHERE T1.t1 = 'p';
  • 述語は、 と の値をIN ('N', 'P')持つ table2 から t2 の値を取得します。NP

  • このWHERE節は、値が である tabale1 から t1 の値を取得します。この述語を条件Pに移動できます。JOIN

于 2012-12-28T11:41:25.403 に答える
0

Across joinは、左側のテーブルのすべての行に対して、右側のテーブルのすべての行を繰り返します。where次に、句で「無関係な」条件を指定できます。

select  *
from    Table1 t1
cross join
        Table2 t2
where   t1.col1 = 'N'
        and t2.col1 in ('N', 'P')
于 2012-12-28T11:42:01.550 に答える
0

あなたのシナリオでは、両方のテーブルに多くの重複があるため、どの結合もクロス結合として機能します (100 行の「P」を持つテーブル 1 と 50 行の「P」を持つテーブル 2)。

select  t1.*,t2.*
from    Table1 t1
join    Table2 t2
where   t1.field1 = 'N'
        and t2.field1 IN ('N', 'P')

また、100 行のみを取得するという要件は不可能です。table1 の「P」の最初の行は、「P」を使用して table2 の 50 行と結合されるため、table1 の各行に対して 50 行が出力されます。 本当に 100 行が必要な場合は、LIMITORTOPをフィルター条件として入力します。

これがお役に立てば幸いです!!!

于 2012-12-28T11:57:35.270 に答える