SQL:比较行中的电子邮件地址,并检索未找到的行

时间:2016-04-26 12:38:36

标签: database excel teradata

我正在开发一个Teradata系统,其中有一个表(TABLE_NAME),其中有一列email_address_table。我有一张excel-sheet,其中有一列电子邮件地址。

我要做的是,检索表中的所有行,其中email_address_table不是Excel工作表中存在的电子邮件地址的一部分。

据我所知,Teradata不能直接使用excel表,所以我用Java编写代码,在那里我可以从列中检索单个电子邮件地址,甚至将它们格式化为String,我就是想直接在SQL查询中使用。因此,基本上,查询将在Java程序中根据我需要的语法进行整形。

输入:

    +---------+----------+---------------------------------+
    | id      | name                |          Date        |
    +---------+----------+---------------------------------+
    | 1       | abc@gmail.com       |         21.03.2015   |
    | 2       | def@gmail.com       |          22.04.2015  |
    | 3       | ajk@gmail.com       |          22.03.2015  |
    | 4       | ghi@gmail.com       |          23.03.2015  |
    | 5       | ghi@gmail.com       |          23.03.2015  |

Excel表格:

    +---------+-----------+
    |     name            |
    +---------+-----------+
    | abc@gmail.com       |
    | ccc@gmail.com       |
    | ggg@gmail.com       |
    | hhh@gmail.com       |
    | ghi@gmail.com       |

预期查询:

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

此外,TABLE_NAME包含大约80,000个条目,excel表包含大约4000个电子邮件地址。这种搜索的最佳方式是什么?

如何解决此问题。我已经将excel表中的电子邮件作为普通字符串,我可以复制粘贴,直接在Java中更改格式。谢谢。

1 个答案:

答案 0 :(得分:1)

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