2009-06-26 124 views

回答

3

做一个临时表,电子mailaddresses加载到临时表,然后做一个NOT IN的查询,如

SELECT emailaddress FROM temp_table WHERE emailaddress NOT IN (SELECT emailaddress FROM table) 

,你可以用INSERT延长该INTO

4

对于一个巨大的名单,我会建议加载,列出到第二个表(例如,TEMP_EMAIL_ADDRESS),然后使用:

SELECT 
    EMAIL 
FROM 
    TEMP_EMAIL_ADDRESS 
WHERE 
    EMAIL NOT IN (SELECT EMAIL FROM EMAIL_ADDRESS) 

数据转换

如果你的数据是在一个名为文本文件emails.txt(每行一个行),可以使用下面的DOS命令创建插入语句:

FOR /F %i IN (emails.txt) DO echo INSERT INTO TEMP_EMAIL_ADDRESS (EMAIL) VALUES ('%i') >> insert-email.sql 

该命令将创建一个新的文件名为嵌入email.sql在当前目录,包含所有插入您需要将现有的电子邮件地址列表注入数据库。

+1

围绕“大列表”部分应该大胆。 – TheTXI 2009-06-26 22:27:42

+0

我认为这是倒退。它会告诉我哪些地址在数据库中_不在我的列表中。但是我想知道__列表中的哪些地址__不在数据库__0_ – 2009-06-29 15:46:33

2

为什么你不把电子邮件地址作为表格导入,只需要对照你已有的表格进行检查?

除此之外,您可以将电子邮件地址列表作为XML数据类型或表数据类型传递,并根据该数据类型进行查询。

1

创建表“ newaddresses“,它具有所有查询电子邮件地址。

做这样的事情:

(从我的头顶,语法可能不是100%正确的,希望给你正确的想法)

select n.email 
from newaddresses n 
left join alreadysubscribed a 
    on n.email = a.email 
where a.email is null 

此连接的两个表电子邮件地址,然后为您列出仅加入失败的条目。

0

也许你可以在电子邮件创建索引:

CREATE INDEX email_index ON my_table(email) 

,然后简单地用

SELECT email FROM my_table WHERE my_table.email = some_email 
0

嗯......没有人提到IF EXISTS检查。这将是我的第一个想法:

IF NOT EXISTS (SELECT * FROM MyTable where MyTable.email = "[email protected]

虽然,也许表现无异于NOT IN不同。

希望这会有所帮助。