1

フィールドf1とf2を持つテーブルT1と、フィールドf3とf4を持つテーブルT2があります。

いくつかのダミー値を持たせましょう:

T1: (1,1) (2,3) (3,3) (4,3) (5,1)
T2: (1,1) (1,2) (3,1) (3,3)

f2とf3は、同じもの、つまりT1とT2の間のブリッジを定義するものと考えることができます。f4の値2に関連付けられていないすべてのf1を取得したいと思います。したがって、私の期待される出力は次のようになります。

(2)、(3)、(4)1および5の場合のF1値F2 = F3 = 1は、T2でf4=2になります。

どうすればこれを達成できますか?

編集2:T1は長いプロセスから派生し、小さなテーブルであると予想されるのに対し、T2は大規模で、インデックスなしで操作することは不可能であることを忘れました

4

3 に答える 3

1

f2とf3は同じものであるため、2つのフィールド間で結合します。

select f1 
from t1 
    left join t2 
        on t1.f2 = t2.f3 
        and t2.f4=2
where f3 is null    
于 2012-10-01T08:36:13.580 に答える
0
SELECT DISTINCT F1
FROM T1
WHERE (SELECT COUNT(F3) FROM T2 WHERE T1.F2 = T2.F3 AND T2.F4 = 2) = 0
于 2012-10-01T08:32:48.450 に答える
0

LEFTJOINはこのために機能するはずです。DISTINCTを使用して、重複を回避できます

SELECT DISTINCT f1
FROM T1
LEFT JOIN T2
ON T1.f2 = T2.f3
WHERE T2.f4 IS NULL OR T2.f4 <> 2
于 2012-10-01T09:58:05.697 に答える