2016-04-26 8 views
0

私は1つのテーブル(TABLE_NAME)を持つTeradataシステムで作業しています。ここにはemail_address_tableというカラムがあります。私は電子メールアドレスの列を持っているExcelシートを持っています。SQL:行内の電子メールアドレスを比較し、見つからない行を検索する

私がしようとしているのは、email_address_tableがExcelシートにある電子メールアドレスの一部ではないテーブル内のすべての行を取得することです。

私が知る限り、TeradataはExcelシートで直接動作することはできませんので、私はJavaでコードを書いています。ここで列から個々の電子メールアドレスを取得して、直接SQLクエリで使用します。ですから、基本的には、クエリは、私が必要とする構文に基づいて、Javaプログラムで形成されるでしょう。

入力:

+---------+----------+---------------------------------+ 
    | id  | name    |   Date  | 
    +---------+----------+---------------------------------+ 
    | 1  | [email protected]  |   21.03.2015 | 
    | 2  | [email protected]  |   22.04.2015 | 
    | 3  | [email protected]  |   22.03.2015 | 
    | 4  | [email protected]  |   23.03.2015 | 
    | 5  | [email protected]  |   23.03.2015 | 

Excelシート:期待

+---------+-----------+ 
    |  name   | 
    +---------+-----------+ 
    | [email protected]  | 
    | [email protected]  | 
    | [email protected]  | 
    | [email protected]  | 
    | [email protected]  | 

クエリ:

select * from TABLE_NAME where email_address does not match any in {"email1","email2","email3"...."email-n"} 

はまた、TABLE_NAMEは約8万のエントリが含まれており、Excelシートは、4000の周りに含まれていますメールアドレス。この検索に最適な方法はありますか?

どうすればこの問題を解決できますか。私は既にExcelの電子メールをペーストをコピーしてJavaで直接書式を変更できるプレーンストリングとして持っています。ありがとうございました。

答えて

1
SELECT * FROM table_name WHERE email_address NOT IN ('email1', 'email2', 'email3') 
+0

ありがとうございます。私はすでにそれを引き起こしました。 table_nameには約80,000の電子メールアドレスがあり、4000を超えるExcelシートがあるので、これを最適化する方法はありますか。 –

+0

これはExcelシートでなければなりませんか?追加のテーブルにデータをインポートした場合、 'WHERE email_address NOT IN(SELECT email_address FROM additional_table)'を持つことができます。 – Aconcagua

+0

問題は、JavaプログラムをTeradataに直接接続できないことです。私は一時的なテーブルに400のエントリを追加するために挿入クエリが必要です。私はすでに電子メールアドレスを持っています... –

関連する問題