删除包含此域名列表的另一列中包含域名的电子邮件地址

时间:2018-09-17 16:59:41

标签: sql-server

我有2个表,每个表都有一列。表1的第1列包含电子邮件地址(Emails),表2的第2列包含包含电子邮件地址中的域(domains)。此列2还包含电子邮件应该删除。 我想从第1列中删除包含第2列中的域名和电子邮件地址的电子邮件地址。 这两个表是从文本文件导入到mssql上的db表中的 谢谢

1 个答案:

答案 0 :(得分:0)

delete 
t1 
from table1 as t1 
where 
exists(select 1 from table2 as t2.column2 = right(t1.column1, len(t1.column1) - Charindex('@', t1.column1)) )

这是一个非常丑陋的查询,对于大表来说应该很慢。我建议您在表1中添加一个固定的计算列,该列将使用丑陋的表达式包含此计算域:

ALTER TABLE table1 ADD computedDomain as right(t1.column1, len(t1.column1) - Charindex('@', t1.column1)) persisted; 

然后,您可以根据需要在计算列上添加索引