2012-03-31 8 views
0

LOAD DATA INFILEでデータを挿入できました。その後、クエリを使用しているとき:LOAD DATA INFILEの後にNOT INクエリを実行する

SELECT * FROM tempupload 
     WHERE columnName NOT IN (SELECT columnName FROM othertable) 

私には望ましい結果が得られません。しかし、私はcolumnNameのデータ型をdoubleに変換すると(そしてvarcharにやり直して)私に望ましい結果が得られます。

Java EEアプリケーションからこれらのクエリを使用する必要があるので、私を案内してください。

+1

テーブルのデータ型は? –

+0

クエリの列のvarchar(40)が実行されません – vinay

+0

'NOT IN()'の代わりに 'LEFT JOIN ... IS NULL'を使用すると、ほぼ確実に高速になります。結合に使用される2つのフィールドのデータ型は何ですか?これらの2つのフィールドにはどのようなデータが格納されていますか? DOUBLEにキャストしてVARCHARに戻すことができるという事実は、間違ったデータ型を使用していることを示唆しています。 – nnichols

答えて

0

othertableにNULLがある場合は、NOT INthisを参照)に問題がある可能性があります。クエリを改善するには、以下を試してみてください:

SELECT * FROM tempupload 
WHERE EXISTS (SELECT 1 
    FROM othertable 
    WHERE othertable.columnName = tempupload.columnName) 
関連する問題