2016-04-22 14 views
0

これは本当に苦労しています...私は、動作するように見え、FrontDoorColourがREDであるところに一致する40,000アドレスの行IDを特定しています。Distinct Joinと一致しないデータを見つける - Teradata

SELECT DISTINCT ID 
FROM Database.table1 
WHERE table1.address = table2.address 
AND table1.FrontDoorColour = 'RED' 

私はこれを逆にしてFrontDoorColourはREDが、どこのアドレスが一致していません10,000アドレスを識別したいときに私が持っている問題があります。

私は同じクエリを実行しますが、その代わり万NON-一致する行を生成するので、私はスプール領域エラー(2646)

を取得

WHERE table1.address <> table2.addres

ため

WHERE table1.address = table2.address

を入れ替えます

ご提案いただければ幸いです! ありがとう

答えて

0

2番目のクエリの出力はPRODUCT JOINとなり、スプールエラーが発生した可能性があります。最初のクエリでは製品結合も可能ですが、スプール割り当て内で処理される可能性があります。次のSQLは、Table1のアドレスIDがTable2に見つからず、Table1のドアがアドレスidに対して赤色であるアドレスidsを見つけるのに役立ちます。

SELECT DISTINCT t1.id 
    FROM Database.Table1 t1 
WHERE NOT EXISTS (SELECT 1 
        FROM Database.Table2 t2 
        WHERE t1.address = t2.address) 
    AND t1.FrontDoorColour = 'RED'; 
+0

ありがとう、それは完璧に動作します!今私はちょうど誰も彼らの正面玄関を塗ることを願ってはいけない; o) – Surfing

関連する問題